public virtual CustomerChangeData get(CustomerSyncSelector selector) {
   object[] results = this.Invoke("get", new object[] { selector });
   return ((CustomerChangeData) (results[0]));
 }
        /// <summary>
        /// Runs the code example.
        /// </summary>
        /// <param name="user">The AdWords user.</param>
        public void Run(AdWordsUser user)
        {
            // Get the CustomerSyncService.
              CustomerSyncService customerSyncService =
              (CustomerSyncService) user.GetService(AdWordsService.v201309.
              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);
              }
        }