Beispiel #1
0
 def get_data_extension_by_customer_key(self, data_extension_customer_key):
     de = ET_Client.ET_DataExtension()
     de.auth_stub = self.auth_stub
     de.props = ["CustomerKey", "Name"]
     de.search_filter = {
         'Property': 'CustomerKey',
         'SimpleOperator': 'like',
         'Value': data_extension_customer_key
     }
     return de.get()
Beispiel #2
0
    def create_data_extension(self, table_name: str, customer_key: str,
                              message: List[Dict[str, str]]):
        """
         [{"Name" : "Name", "FieldType" : "Text",  "MaxLength" : "255"},
         {"Name" : "phone_number", "FieldType" : "Text",  "MaxLength" : "13"},
         {"Name" : "email", "FieldType" : "EmailAddress", "IsPrimaryKey" : "true", "IsRequired" : "true"}]
        """
        logger.info(f'Creating new {table_name} Data Extension')
        data_extension = ET_Client.ET_DataExtension()
        data_extension.auth_stub = self.get_client()

        data_extension.props = {
            "Name": table_name,
            "CustomerKey": customer_key
        }
        data_extension.columns = message
        response = data_extension.post()
        logger.info(
            f"post_tatus: {str(response.status)}, code: {str(response.code)}, message: {str(response.message)}"
        )
        logger.info("Results: " + str(response.results))
        if int(response.status) == 200:  # HTTPStatus.OK
            return True
        return False
Beispiel #3
0
    def run(self):
        '''
        Main execution code
        '''
        output = []
        output_title = []

        params = self.cfg_params  # noqac

        # Get proper list of tables
        client_id = params.get(CLIENT_ID)
        client_secret = params.get(CLIENT_SECRET)
        subdomain = params.get(SUBDOMAIN)
        sub_id = params.get(MID)
        scope = params.get(SCOPE)

        stubObj = ET_Client.ET_Client(
            False, False, {
                'clientid': client_id,
                'clientsecret': client_secret,
                'wsdl_file_local_loc':
                DEFAULT_FILE_INPUT + '/ExactTargetWSDL.xml',
                'authenticationurl':
                'https://' + subdomain + '.auth.marketingcloudapis.com/',
                'useOAuth2Authentication': 'True',
                'accountId': sub_id
            })

        if scope == ('Subscribers').lower():
            getSub = ET_Client.ET_Subscriber()
            getSub.props = ["SubscriberKey", "EmailAddress", "Status"]
            getSub.auth_stub = stubObj
            getResponse = getSub.get()
            result = getResponse.results
            output = [(x['EmailAddress'], x['SubscriberKey'], x['Status'])
                      for x in result]
            output_title = ['email', 'subscriber_key', 'status']
        elif scope == ('DataExtensions').lower():
            de = ET_Client.ET_DataExtension()
            de.auth_stub = stubObj
            de.props = ["CustomerKey", "Name", "Description"]
            getResponse = de.get()
            result = getResponse.results
            output = [(x['CustomerKey'], x['Name'], x['Description'])
                      for x in result]
            output_title = ['customerkey', 'name', 'description']
        elif scope == ('Folders').lower():
            getFolder = ET_Client.ET_Folder()
            getFolder.auth_stub = stubObj
            getFolder.props = [
                "ID", "Client.ID", "ParentFolder.ID",
                "ParentFolder.CustomerKey", "ParentFolder.ObjectID",
                "ParentFolder.Name", "ParentFolder.Description",
                "ParentFolder.ContentType", "ParentFolder.IsActive",
                "ParentFolder.IsEditable", "ParentFolder.AllowChildren",
                "Name", "Description", "ContentType", "IsActive", "IsEditable",
                "AllowChildren", "CreatedDate", "ModifiedDate",
                "Client.ModifiedBy", "ObjectID", "CustomerKey",
                "Client.EnterpriseID", "Client.CreatedBy"
            ]
            getResponse = getFolder.get()
            result = getResponse.results
            output = [(x['Name'], x['ID'], x['CustomerKey'], x['ObjectID'])
                      for x in result]
            output_title = ['name', 'id', 'customerkey', 'objectid']

        output_file = DEFAULT_TABLE_DESTINATION + scope + '.csv'
        logging.info(output_file)

        with open(output_file, 'w') as out:
            csv_out = csv.writer(out)
            csv_out.writerow(output_title)
            for row in output:
                csv_out.writerow(row)
    # Declare a 2nd Python dict which contain all of the details for a DataExtension
    deTwo = {"Name": "HelperDETwo", "CustomerKey": "HelperDETwo"}
    deTwo['columns'] = [{"Name": "Name", "FieldType": "Text", "IsPrimaryKey": "true", "MaxLength": "100", "IsRequired": "true"}, {"Name": "OtherField", "FieldType": "Text"}]

    # Call CreateDataExtensions passing in both DataExtension Hashes as an Array
    createDEResponse = stubObj.CreateDataExtensions([deOne, deTwo])
    print('CreateDataExtensions Status: ' + str(createDEResponse.status))
    print('Code: ' + str(createDEResponse.code))
    print('Message: ' + str(createDEResponse.message))
    print('Results Length: ' + str(len(createDEResponse.results)))
    print('Results: ' + str(createDEResponse.results))

    # Cleaning uprint the newly created DEs
    # Delete deOne
    print('>>> Delete deOne')
    de5 = ET_Client.ET_DataExtension()
    de5.auth_stub = stubObj
    de5.props = {"CustomerKey": "HelperDEOne"}
    delResponse = de5.delete()
    print('Delete Status: ' + str(delResponse.status))
    print('Code: ' + str(delResponse.code))
    print('Message: ' + str(delResponse.message))
    print('Results: ' + str(delResponse.results))

    # Delete deTwo
    print('>>> Delete deTwo')
    de5 = ET_Client.ET_DataExtension()
    de5.auth_stub = stubObj
    de5.props = {"CustomerKey": "HelperDETwo"}
    delResponse = de5.delete()
    print('Delete Status: ' + str(delResponse.status))
Beispiel #5
0
from __future__ import print_function

import ET_Client

try:
    debug = False
    stubObj = ET_Client.ET_Client(False, debug)

    # Get all of the DataExtensions in an Account
    print('>>> Get all of the DataExtensions in an Account')
    de = ET_Client.ET_DataExtension()
    de.auth_stub = stubObj
    de.props = ["CustomerKey", "Name"]
    getResponse = de.get()
    print(('Retrieve Status: ' + str(getResponse.status)))
    print(('Code: ' + str(getResponse.code)))
    print(('Message: ' + str(getResponse.message)))
    print(('MoreResults: ' + str(getResponse.more_results)))
    print(('RequestID: ' + str(getResponse.request_id)))
    print(('Results Length: ' + str(len(getResponse.results))))
    # print('Results: ' + str(getResponse.results))

    # Get all of the DataExtensions in an Account belonging to a specific sub account
    print(
        '>>> Get all of the DataExtensions in an Account belonging to a specific sub account'
    )
    de = ET_Client.ET_DataExtension()
    de.auth_stub = stubObj
    de.props = ["CustomerKey", "Name"]
    de.options = {"Client": {"ID": "1234567"}}
    getResponse = de.get()