use of com.google.api.ads.adwords.axis.v201809.rm.MutateMembersOperand in project googleads-java-lib by googleads.
the class AddCrmBasedUserList method runExample.
/**
* Runs the example.
*
* @param adWordsServices the services factory.
* @param session the session.
* @throws ApiException if the API request failed with one or more service errors.
* @throws RemoteException if the API request failed due to other errors.
* @throws UnsupportedEncodingException if encoding the hashed email failed.
*/
public static void runExample(AdWordsServicesInterface adWordsServices, AdWordsSession session) throws RemoteException, UnsupportedEncodingException {
// Get the UserListService.
AdwordsUserListServiceInterface userListService = adWordsServices.get(session, AdwordsUserListServiceInterface.class);
// Create a user list.
CrmBasedUserList userList = new CrmBasedUserList();
userList.setName("Customer relationship management list #" + System.currentTimeMillis());
userList.setDescription("A list of customers that originated from email addresses");
// CRM-based user lists can use a membershipLifeSpan of 10000 to indicate unlimited; otherwise
// normal values apply.
userList.setMembershipLifeSpan(30L);
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);
// Hash normalized email addresses based on SHA-256 hashing algorithm.
List<Member> members = new ArrayList<>(EMAILS.size());
for (String email : EMAILS) {
String normalizedEmail = toNormalizedString(email);
Member member = new Member();
member.setHashedEmail(toSHA256String(normalizedEmail));
members.add(member);
}
String firstName = "John";
String lastName = "Doe";
String countryCode = "US";
String zipCode = "10011";
AddressInfo addressInfo = new AddressInfo();
// First and last name must be normalized and hashed.
addressInfo.setHashedFirstName(toSHA256String(toNormalizedString(firstName)));
addressInfo.setHashedLastName(toSHA256String(toNormalizedString(lastName)));
// Country code and zip code are sent in plaintext.
addressInfo.setCountryCode(countryCode);
addressInfo.setZipCode(zipCode);
Member memberByAddress = new Member();
memberByAddress.setAddressInfo(addressInfo);
members.add(memberByAddress);
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 });
// 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", EMAILS.size(), userListResult.getName(), userListResult.getId());
}
}
Aggregations