Как добавить пользователей в список пользователей ремаркетинга с помощью Google Ads API?
Я пытаюсь создать список пользователей для ремаркетинга, добавить в него некоторых пользователей, используя реализацию Java для Google Ads Api.
Часть создания настраиваемой аудитории выглядит нормально, я вижу, что она создана в платформе Ads, но похоже, что пользователи не были включены в нее.
Экран печати: пустая пользовательская аудитория внутри платформы Google Ads
Я отправляю JsonArray с 2000 пользователем в качестве параметра и хэширую его внутри этой функции и использовал эти образцы в качестве справки.
Я не уверен, что я неправильно понял документацию, неправильно ли я включил userList или что-то в этом роде.
public JsonArray uploadJsonList(String customerId, JsonArray jsonUsers) throws Exception {
List<Member> members = new ArrayList<>();
JsonObject hashedObj = new JsonObject();
JsonArray arrayJsonHashed = new JsonArray();
for (JsonValue jsonValue : jsonUsers) {
JsonObject obj = jsonValue.asObject();
hashedObj = new JsonObject();
//Getting user data
String normalizedEmail = textUtils.toNormalizedString(obj.get("PESSOA_EMAIL1").toString());
String normalizedPhone = textUtils.toNormalizedString(obj.get("PESSOA_CELULAR").toString());
String normalizedId = obj.get("PESSOA_ID").toString();
normalizedId = removeFirstandLast(normalizedId);
//Hashing user data
hashedObj.add("pessoa_email1", textUtils.toSHA256String(normalizedEmail));
hashedObj.add("pessoa_celular", textUtils.toSHA256String(normalizedPhone));
hashedObj.add("pessoa_id",normalizedId);
arrayJsonHashed.add(hashedObj);
//Creating a member list
Member member = new Member();
member.setHashedEmail(textUtils.toSHA256String(normalizedEmail));
member.setHashedPhoneNumber(textUtils.toSHA256String(normalizedPhone));
members.add(member);
}
//starting ads services
AdWordsServices adWordsServices = new AdWordsServices();
Customer[] customers = getCustomers(adWordsServices, session);
session.setClientCustomerId(customerId);
AdwordsUserListServiceInterface userListService = adWordsServices.get(session, AdwordsUserListServiceInterface.class);
// Create a user list.
CrmBasedUserList userList = new CrmBasedUserList();
userList.setName("Test Remarketing Custom Audience - " + System.currentTimeMillis());
userList.setDescription("A list of customers that was readed from big query");
// CRM-based user lists can use a membershipLifeSpan of 10000 to indicate unlimited; otherwise
// normal values apply.
userList.setMembershipLifeSpan(100L);
userList.setUploadKeyType(CustomerMatchUploadKeyType.CONTACT_INFO);
// Create operation.
UserListOperation operation = new UserListOperation();
operation.setOperand(userList);
operation.setOperator(Operator.ADD);
// Add user list.
UserListReturnValue result = userListService.mutate(new UserListOperation[]{operation});
// Display user list.
UserList userListAdded = result.getValue(0);
System.out.printf(
"User list with name '%s' and ID %d was added.%n",
userListAdded.getName(), userListAdded.getId());
// Get user list ID.
Long userListId = userListAdded.getId();
// Create operation to add members to the user list based on email addresses.
MutateMembersOperation mutateMembersOperation = new MutateMembersOperation();
MutateMembersOperand operand = new MutateMembersOperand();
operand.setUserListId(userListId);
operand.setMembersList(members.toArray(new Member[members.size()]));
mutateMembersOperation.setOperand(operand);
mutateMembersOperation.setOperator(Operator.ADD);
// Add members to the user list based on email addresses.
MutateMembersReturnValue mutateMembersResult =
userListService.mutateMembers(new MutateMembersOperation[]{mutateMembersOperation});
// Display results.
// Reminder: it may take several hours for the list to be populated with members.
for (UserList userListResult : mutateMembersResult.getUserLists()) {
System.out.printf(
"%d email addresses were uploaded to user list with name '%s' and ID %d "
+ "and are scheduled for review.%n",
members.size(), userListResult.getName(), userListResult.getId());
}
return arrayJsonHashed;
}