/// <summary> /// Creates the extension setting fo a list of feed items. /// </summary> /// <param name="user">The user for which extension settings are created. /// </param> /// <param name="feedItems">The list of all feed items.</param> /// <param name="campaignId">ID of the campaign to which extension settings /// are added.</param> /// <param name="feedItemIds">IDs of the feed items for which extension /// settings should be created.</param> /// <param name="platformRestrictions">The platform restrictions for the /// extension setting.</param> private static void CreateExtensionSetting(AdWordsUser user, Dictionary<long, SiteLinkFromFeed> feedItems, long campaignId, List<long> feedItemIds, ExtensionSettingPlatform platformRestrictions) { CampaignExtensionSetting extensionSetting = new CampaignExtensionSetting() { campaignId = campaignId, extensionType = FeedType.SITELINK, extensionSetting = new ExtensionSetting() { } }; List<ExtensionFeedItem> extensionFeedItems = new List<ExtensionFeedItem>(); foreach (long feedItemId in feedItemIds) { SiteLinkFromFeed feedItem = feedItems[feedItemId]; SitelinkFeedItem newFeedItem = new SitelinkFeedItem() { sitelinkText = feedItem.Text, sitelinkUrl = feedItem.Url, sitelinkFinalUrls = feedItem.FinalUrls, sitelinkFinalMobileUrls = feedItem.FinalMobileUrls, sitelinkTrackingUrlTemplate = feedItem.TrackingUrlTemplate, sitelinkLine2 = feedItem.Line2, sitelinkLine3 = feedItem.Line3, scheduling = feedItem.Scheduling }; extensionFeedItems.Add(newFeedItem); } extensionSetting.extensionSetting.extensions = extensionFeedItems.ToArray(); extensionSetting.extensionSetting.platformRestrictions = platformRestrictions; extensionSetting.extensionType = FeedType.SITELINK; CampaignExtensionSettingService campaignExtensionSettingService = (CampaignExtensionSettingService) user.GetService( AdWordsService.v201506.CampaignExtensionSettingService); CampaignExtensionSettingOperation operation = new CampaignExtensionSettingOperation() { operand = extensionSetting, @operator = Operator.ADD }; campaignExtensionSettingService.mutate(new CampaignExtensionSettingOperation[] { operation }); return; }
/// <summary> /// Runs the code example. /// </summary> /// <param name="user">The AdWords user.</param> /// <param name="campaignId">Id of the campaign to which sitelinks will /// be added.</param> public void Run(AdWordsUser user, long campaignId) { // Get the CampaignExtensionSettingService. CampaignExtensionSettingService campaignExtensionSettingService = (CampaignExtensionSettingService) user.GetService( AdWordsService.v201506.CampaignExtensionSettingService); CustomerService customerService = (CustomerService) user.GetService( AdWordsService.v201506.CustomerService); Customer customer = customerService.get(); // Create your sitelinks. SitelinkFeedItem sitelink1 = new SitelinkFeedItem() { sitelinkText = "Store Hours", sitelinkFinalUrls = new string[] { "http://www.example.com/storehours" } }; // Show the Thanksgiving specials link only from 20 - 27 Nov. SitelinkFeedItem sitelink2 = new SitelinkFeedItem() { sitelinkText = "Thanksgiving Specials", sitelinkFinalUrls = new string[] { "http://www.example.com/thanksgiving" }, startTime = string.Format("{0}1120 000000 {1}", DateTime.Now.Year, customer.dateTimeZone), endTime = string.Format("{0}1127 235959 {1}", DateTime.Now.Year, customer.dateTimeZone) }; // Show the wifi details primarily for high end mobile users. SitelinkFeedItem sitelink3 = new SitelinkFeedItem() { sitelinkText = "Wifi available", sitelinkFinalUrls = new string[] { "http://www.example.com/mobile/wifi" }, devicePreference = new FeedItemDevicePreference() { // See https://developers.google.com/adwords/api/docs/appendix/platforms // for device criteria IDs. devicePreference = 30001 } }; // Show the happy hours link only during Mon - Fri 6PM to 9PM. SitelinkFeedItem sitelink4 = new SitelinkFeedItem() { sitelinkText = "Happy hours", sitelinkFinalUrls = new string[] { "http://www.example.com/happyhours" }, scheduling = new FeedItemSchedule[] { new FeedItemSchedule() { dayOfWeek = AdWords.v201506.DayOfWeek.MONDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO }, new FeedItemSchedule() { dayOfWeek = AdWords.v201506.DayOfWeek.TUESDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO }, new FeedItemSchedule() { dayOfWeek = AdWords.v201506.DayOfWeek.WEDNESDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO }, new FeedItemSchedule() { dayOfWeek = AdWords.v201506.DayOfWeek.THURSDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO }, new FeedItemSchedule() { dayOfWeek = AdWords.v201506.DayOfWeek.FRIDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO } } }; // Create your campaign extension settings. This associates the sitelinks // to your campaign. CampaignExtensionSetting campaignExtensionSetting = new CampaignExtensionSetting(); campaignExtensionSetting.campaignId = campaignId; campaignExtensionSetting.extensionType = FeedType.SITELINK; campaignExtensionSetting.extensionSetting = new ExtensionSetting() { extensions = new ExtensionFeedItem[] { sitelink1, sitelink2, sitelink3, sitelink4 } }; CampaignExtensionSettingOperation operation = new CampaignExtensionSettingOperation() { operand = campaignExtensionSetting, @operator = Operator.ADD }; try { // Add the extensions. CampaignExtensionSettingReturnValue retVal = campaignExtensionSettingService.mutate( new CampaignExtensionSettingOperation[] { operation }); // Display the results. if (retVal.value != null && retVal.value.Length > 0) { CampaignExtensionSetting newExtensionSetting = retVal.value[0]; Console.WriteLine("Extension setting with type = {0} was added to campaign ID {1}.", newExtensionSetting.extensionType, newExtensionSetting.campaignId); } else { Console.WriteLine("No extension settings were created."); } } catch (Exception e) { throw new System.ApplicationException("Failed to create extension settings.", e); } }