Google.Api.Ads.AdWords.Examples.CSharp.v201306.UpgradeLegacySitelinks.Run C# (CSharp) Method

Run() public method

Runs the code example.
public Run ( Google.Api.Ads.AdWords.Lib.AdWordsUser user, long campaignIds ) : void
user Google.Api.Ads.AdWords.Lib.AdWordsUser The AdWords user.
campaignIds long Ids of the campaign for which sitelinks are /// upgraded.
return void
        public void Run(AdWordsUser user, long[] campaignIds)
        {
            // Get the CampaignAdExtensionService.
              CampaignAdExtensionService campaignAdExtensionService =
              (CampaignAdExtensionService) user.GetService(
              AdWordsService.v201306.CampaignAdExtensionService);
              // Get the FeedMappingService.
              FeedMappingService feedMappingService = (FeedMappingService) user.GetService(
              AdWordsService.v201306.FeedMappingService);
              // Get the FeedService.
              FeedService feedService = (FeedService) user.GetService(AdWordsService.v201306.FeedService);
              // Get the FeedItemService.
              FeedItemService feedItemService = (FeedItemService) user.GetService(
              AdWordsService.v201306.FeedItemService);
              // Get the CampaignFeedService.
              CampaignFeedService campaignFeedService = (CampaignFeedService) user.GetService(
              AdWordsService.v201306.CampaignFeedService);

              // Try to retrieve an existing feed that has been mapped for use with
              // sitelinks. if multiple such feeds exist, the first matching feed is
              // retrieved. You could modify this code example to retrieve all the feeds
              // and pick the appropriate feed based on user input.
              SiteLinksFeed siteLinksFeed = getExistingFeed(feedMappingService);

              if (siteLinksFeed == null) {
            // Create a feed for storing sitelinks.
            siteLinksFeed = createSiteLinksFeed(feedService);

            // Map the feed for using with sitelinks.
            createSiteLinksFeedMapping(feedMappingService, siteLinksFeed);
              }

              foreach (long campaignId in campaignIds) {
            // Get legacy sitelinks for the campaign.
            CampaignAdExtension extension =
            getLegacySitelinksForCampaign(campaignAdExtensionService, campaignId);
            if (extension != null) {
              // Get the sitelinks.
              Sitelink[] legacySitelinks =
              ((SitelinksExtension) extension.adExtension).sitelinks;

              // Add the sitelinks to the feed.
              List<long> siteLinkFeedItemIds =
              createSiteLinkFeedItems(feedItemService, siteLinksFeed, legacySitelinks);

              // Associate feeditems to the campaign.
              associateSitelinkFeedItemsWithCampaign(
              campaignFeedService, siteLinksFeed, siteLinkFeedItemIds, campaignId);

              // Once the upgraded sitelinks are added to a campaign, the legacy
              // sitelinks will stop serving. You can delete the legacy sitelinks
              // once you have verified that the migration went fine. In case the
              // migration didn't succeed, you can roll back the migration by deleting
              // the CampaignFeed you created in the previous step.
              deleteLegacySitelinks(campaignAdExtensionService, extension);
            }
              }
        }

Usage Example

 /// <summary>
 /// Main method, to run this code example as a standalone application.
 /// </summary>
 /// <param name="args">The command line arguments.</param>
 public static void Main(string[] args)
 {
     UpgradeLegacySitelinks codeExample = new UpgradeLegacySitelinks();
       Console.WriteLine(codeExample.Description);
       try {
     long campaignId = long.Parse("INSERT_CAMPAIGN_ID_HERE");
     codeExample.Run(new AdWordsUser(), new long[] {campaignId});
       } catch (Exception ex) {
     Console.WriteLine("An exception occurred while running this code example. {0}",
     ExampleUtilities.FormatException(ex));
       }
 }