Hello,

I've multiple users to be added to a userlist. Below is the code for the 
same, Am I doing it correctly , can anyone lemme know.

def add_users(self, users: list):
offline_user_data_job_resource_name = self.create_offline_user_data_job()
request = 
self.google_client.get_type("AddOfflineUserDataJobOperationsRequest")
request.resource_name = offline_user_data_job_resource_name
request.operations = self.build_offline_user_data_job_operations(users, 
"add")
offline_user_data_job_run_response = 
self.run_offline_user_data_job(offline_user_data_job_resource_name)

def remove_users(self, user: list):
offline_user_data_job_resource_name = self.create_offline_user_data_job()
request = 
self.google_client.get_type("AddOfflineUserDataJobOperationsRequest")
request.resource_name = offline_user_data_job_resource_name
request.operations = self.build_offline_user_data_job_operations(user, 
"remove")
offline_user_data_job_run_response = 
self.run_offline_user_data_job(offline_user_data_job_resource_name)

def create_offline_user_data_job(self):
# Creates a new offline user data job.
user_list_resource_name = 
f"customers/{self.customer_id}/userLists/{self.audience_id}"
offline_user_data_job = self.google_client.get_type("OfflineUserDataJob")
offline_user_data_job.type_ = (
self.google_client.enums.OfflineUserDataJobTypeEnum.CUSTOMER_MATCH_USER_LIST
)
offline_user_data_job.customer_match_user_list_metadata.user_list = 
user_list_resource_name
# Issues a request to create an offline user data job.
create_offline_user_data_job_response = 
self.offline_user_data_job_service_client.create_offline_user_data_job(
customer_id=self.customer_id, job=offline_user_data_job
)
offline_user_data_job_resource_name = (
create_offline_user_data_job_response.resource_name
)
print(
"Created an offline user data job with resource name: "
f"{offline_user_data_job_resource_name}."
)
return offline_user_data_job_resource_name

def build_offline_user_data_job_operations(self, users: list, 
operation_type: str):
user_data_with_email_address_operation_list = []
try:
for email in users:
user_data_with_email_address_operation = self.google_client.get_type(
"OfflineUserDataJobOperation"
)
if operation_type == "add":
user_data_with_email_address = user_data_with_email_address_operation.create
else:
user_data_with_email_address = user_data_with_email_address_operation.remove

user_identifier_with_hashed_email = 
self.google_client.get_type("UserIdentifier")
user_identifier_with_hashed_email.hashed_email = email
user_data_with_email_address.user_identifiers.append(
user_identifier_with_hashed_email
)
user_data_with_email_address_operation_list.append(user_data_with_email_address_operation)

return user_data_with_email_address_operation_list

except GoogleAdsException as ex:
config.logger.info(f'Request with ID "{ex.request_id}" failed with status '
f'"{ex.error.code().name}" and includes the following errors:')
message = ''
for error in ex.failure.errors:
print(f'\tError with message "{error.message}".')
message += error.message + ' '
if error.location:
for field_path_element in error.location.field_path_elements:
print(f'\t\tOn field: {field_path_element.field_name}')

error = f'Error occured with status: {ex.error.code().name}, and message: 
{message}'
config.logger.error(error)

def run_offline_user_data_job(self, resource_name: str):
operation_response = 
self.offline_user_data_job_service_client.run_offline_user_data_job(resource_name)
return operation_response

-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog:
https://googleadsdeveloper.blogspot.com/
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~

You received this message because you are subscribed to the Google
Groups "AdWords API and Google Ads API Forum" group.
To post to this group, send email to adwords-api@googlegroups.com
To unsubscribe from this group, send email to
adwords-api+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/adwords-api?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Google Ads API and AdWords API Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to adwords-api+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/adwords-api/2258f021-24e0-423c-9252-75870dc47d87n%40googlegroups.com.

Reply via email to