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);
}
}
}