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()
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
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))
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()