public void Run(AdWordsUser user)
{
// Get the CustomerSyncService.
CustomerSyncService customerSyncService =
(CustomerSyncService) user.GetService(AdWordsService.v201306.
CustomerSyncService);
// The date time string should be of the form yyyyMMdd HHmmss zzz
string minDateTime = DateTime.Now.AddDays(-1).ToUniversalTime().ToString("yyyyMMdd HHmmss")
+ " UTC";
string maxDateTime = DateTime.Now.ToUniversalTime().ToString("yyyyMMdd HHmmss") + " UTC";
// Create date time range.
DateTimeRange dateTimeRange = new DateTimeRange();
dateTimeRange.min = minDateTime;
dateTimeRange.max = maxDateTime;
try {
// Create the selector.
CustomerSyncSelector selector = new CustomerSyncSelector();
selector.dateTimeRange = dateTimeRange;
selector.campaignIds = GetAllCampaignIds(user);
// Get all account changes for campaign.
CustomerChangeData accountChanges = customerSyncService.get(selector);
// Display the changes.
if (accountChanges != null && accountChanges.changedCampaigns != null) {
Console.WriteLine("Displaying changes up to: {0}", accountChanges.lastChangeTimestamp);
foreach (CampaignChangeData campaignChanges in accountChanges.changedCampaigns) {
Console.WriteLine("Campaign with id \"{0}\" was changed:", campaignChanges.campaignId);
Console.WriteLine(" Campaign changed status: {0}",
campaignChanges.campaignChangeStatus);
if (campaignChanges.campaignChangeStatus != ChangeStatus.NEW) {
Console.WriteLine(" Added ad extensions: {0}", GetFormattedList(
campaignChanges.addedAdExtensions));
Console.WriteLine(" Added campaign criteria: {0}",
GetFormattedList(campaignChanges.addedCampaignCriteria));
Console.WriteLine(" Added campaign targeting: {0}",
campaignChanges.campaignTargetingChanged? "yes" : "no");
Console.WriteLine(" Deleted ad extensions: {0}",
GetFormattedList(campaignChanges.deletedAdExtensions));
Console.WriteLine(" Deleted campaign criteria: {0}",
GetFormattedList(campaignChanges.deletedCampaignCriteria));
if (campaignChanges.changedAdGroups != null) {
foreach (AdGroupChangeData adGroupChanges in campaignChanges.changedAdGroups) {
Console.WriteLine(" Ad group with id \"{0}\" was changed:",
adGroupChanges.adGroupId);
Console.WriteLine(" Ad group changed status: {0}",
adGroupChanges.adGroupChangeStatus);
if (adGroupChanges.adGroupChangeStatus != ChangeStatus.NEW) {
Console.WriteLine(" Ads changed: {0}",
GetFormattedList(adGroupChanges.changedAds));
Console.WriteLine(" Criteria changed: {0}",
GetFormattedList(adGroupChanges.changedCriteria));
Console.WriteLine(" Criteria deleted: {0}",
GetFormattedList(adGroupChanges.deletedCriteria));
}
}
}
}
Console.WriteLine();
}
} else {
Console.WriteLine("No account changes were found.");;
}
} catch (Exception ex) {
throw new System.ApplicationException("Failed to get account changes.", ex);
}
}