public void Run(AdWordsUser user)
{
// Get the UserListService.
AdwordsUserListService userListService =
(AdwordsUserListService) user.GetService(AdWordsService.v201306.AdwordsUserListService);
// Get the ConversionTrackerService.
ConversionTrackerService conversionTrackerService =
(ConversionTrackerService)user.GetService(AdWordsService.v201306.
ConversionTrackerService);
BasicUserList userList = new BasicUserList();
userList.name = "Mars cruise customers #" + ExampleUtilities.GetRandomString();
userList.description = "A list of mars cruise customers in the last year.";
userList.status = UserListMembershipStatus.OPEN;
userList.membershipLifeSpan = 365;
UserListConversionType conversionType = new UserListConversionType();
conversionType.name = userList.name;
userList.conversionTypes = new UserListConversionType[] {conversionType};
// Optional: Set the user list status.
userList.status = UserListMembershipStatus.OPEN;
// Create the operation.
UserListOperation operation = new UserListOperation();
operation.operand = userList;
operation.@operator = Operator.ADD;
try {
// Add the user list.
UserListReturnValue retval = userListService.mutate(new UserListOperation[] {operation});
UserList[] userLists = null;
if (retval != null && retval.value != null) {
userLists = retval.value;
// Get all conversion snippets
List<string> conversionIds = new List<string>();
foreach (BasicUserList newUserList in userLists) {
if (newUserList.conversionTypes != null) {
foreach (UserListConversionType newConversionType in newUserList.conversionTypes) {
conversionIds.Add(newConversionType.id.ToString());
}
}
}
Dictionary<long, ConversionTracker> conversionsMap =
new Dictionary<long, ConversionTracker>();
if (conversionIds.Count > 0) {
// Create the selector.
Selector selector = new Selector();
selector.fields = new string[] {"Id"};
Predicate conversionTypePredicate = new Predicate();
conversionTypePredicate.field = "Id";
conversionTypePredicate.@operator = PredicateOperator.IN;
conversionTypePredicate.values = conversionIds.ToArray();
selector.predicates = new Predicate[] {conversionTypePredicate};
// Get all conversion trackers.
ConversionTrackerPage page = conversionTrackerService.get(selector);
if (page != null && page.entries != null) {
foreach (ConversionTracker tracker in page.entries) {
conversionsMap[tracker.id] = tracker;
}
}
}
// Display the results.
foreach (BasicUserList newUserList in userLists) {
Console.WriteLine("User list with name '{0}' and id '{1}' was added.",
newUserList.name, newUserList.id);
// Display user list associated conversion code snippets.
if (newUserList.conversionTypes != null) {
foreach (UserListConversionType userListConversionType in
newUserList.conversionTypes) {
if (conversionsMap.ContainsKey(userListConversionType.id)) {
AdWordsConversionTracker conversionTracker =
(AdWordsConversionTracker) conversionsMap[userListConversionType.id];
Console.WriteLine("Conversion type code snippet associated to the list:\n{0}\n",
conversionTracker.snippet);
} else {
throw new Exception("Failed to associate conversion type code snippet.");
}
}
}
}
} else {
Console.WriteLine("No user lists (a.k.a. audiences) were added.");
}
} catch (Exception ex) {
throw new System.ApplicationException("Failed to add user lists (a.k.a. audiences).", ex);
}
}