public static void runExample(AdWordsServices adWordsServices, AdWordsSession session) throws Exception { // Get all of the feeds for the session's account. List<Feed> feeds = getFeeds(adWordsServices, session); for (Feed feed : feeds) { // Retrieve all the sitelinks from the current feed. Map<Long, SiteLinkFromFeed> feedItems = getSiteLinksFromFeed(adWordsServices, session, feed); // Get all the instances where a sitelink from this feed has been added to a campaign. List<CampaignFeed> campaignFeeds = getCampaignFeeds(adWordsServices, session, feed, PLACEHOLDER_SITELINKS); Set<Long> allFeedItemsToDelete = Sets.newHashSet(); for (CampaignFeed campaignFeed : campaignFeeds) { // Retrieve the sitelinks that have been associated with this campaign. Set<Long> feedItemIds = getFeedItemIdsForCampaign(campaignFeed); ExtensionSettingPlatform platformRestrictions = getPlatformRestictionsForCampaign(campaignFeed); if (feedItemIds.isEmpty()) { System.out.printf( "Migration skipped for campaign feed with campaign ID %d " + "and feed ID %d because no mapped feed item IDs were found in the " + "campaign feed's matching function.%n", campaignFeed.getCampaignId(), campaignFeed.getFeedId()); } else { // Delete the campaign feed that associates the sitelinks from the feed to the campaign. deleteCampaignFeed(adWordsServices, session, campaignFeed); // Create extension settings instead of sitelinks. createExtensionSetting( adWordsServices, session, feedItems, campaignFeed, feedItemIds, platformRestrictions); // Mark the sitelinks from the feed for deletion. allFeedItemsToDelete.addAll(feedItemIds); } } // Delete all the sitelinks from the feed. deleteOldFeedItems(adWordsServices, session, allFeedItemsToDelete, feed); } }