/// <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 = new UrlList() { urls = feedItem.FinalUrls }, sitelinkFinalMobileUrls = new UrlList() { urls = 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; using (CampaignExtensionSettingService campaignExtensionSettingService = (CampaignExtensionSettingService)user.GetService( AdWordsService.v201710.CampaignExtensionSettingService)) { CampaignExtensionSettingOperation operation = new CampaignExtensionSettingOperation() { operand = extensionSetting, @operator = Operator.ADD }; campaignExtensionSettingService.mutate( new CampaignExtensionSettingOperation[] { operation }); } return; }
public SitelinkFeedItem CreateSiteLinkFeedItem(SiteLinkModel siteLinkModel) { SitelinkFeedItem sitelinkFeedItem = new SitelinkFeedItem(); sitelinkFeedItem.feedId = siteLinkModel.FeedId; sitelinkFeedItem.feedItemId = siteLinkModel.FeedItemId; sitelinkFeedItem.feedType = siteLinkModel.TypeOfFeed; sitelinkFeedItem.sitelinkText = siteLinkModel.Text; sitelinkFeedItem.sitelinkLine2 = siteLinkModel.DescriptionLine1; sitelinkFeedItem.sitelinkLine3 = siteLinkModel.DescriptionLine2; sitelinkFeedItem.sitelinkFinalUrls = new UrlList() { urls = new string[] { siteLinkModel.Url } }; return(sitelinkFeedItem); }
/// <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.v201601.CampaignExtensionSettingService); CustomerService customerService = (CustomerService)user.GetService( AdWordsService.v201601.CustomerService); Customer customer = customerService.get(); List <ExtensionFeedItem> extensions = new List <ExtensionFeedItem>(); // Create your sitelinks. SitelinkFeedItem sitelink1 = new SitelinkFeedItem() { sitelinkText = "Store Hours", sitelinkFinalUrls = new string[] { "http://www.example.com/storehours" } }; extensions.Add(sitelink1); DateTime startOfThanksGiving = new DateTime(DateTime.Now.Year, 11, 20, 0, 0, 0); DateTime endOfThanksGiving = new DateTime(DateTime.Now.Year, 11, 27, 23, 59, 59); // Add check to make sure we don't create a sitelink with end date in the // past. if (DateTime.Now < endOfThanksGiving) { // 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} {1}", startOfThanksGiving.ToString("yyyyMMdd HHmmss"), customer.dateTimeZone), endTime = string.Format("{0} {1}", endOfThanksGiving.ToString("yyyyMMdd HHmmss"), customer.dateTimeZone) }; extensions.Add(sitelink2); } // 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 } }; extensions.Add(sitelink3); // 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 = DayOfWeek.MONDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO }, new FeedItemSchedule() { dayOfWeek = DayOfWeek.TUESDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO }, new FeedItemSchedule() { dayOfWeek = DayOfWeek.WEDNESDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO }, new FeedItemSchedule() { dayOfWeek = DayOfWeek.THURSDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO }, new FeedItemSchedule() { dayOfWeek = DayOfWeek.FRIDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO } } }; extensions.Add(sitelink4); // 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 = extensions.ToArray() }; 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); } }
// [END AddSitelinks] /// <summary> /// Creates a list of ExtensionFeedItems. /// </summary> ///<param name="client">The Google Ads API client.</param> ///<param name="customerId">The client customer ID.</param> ///<param name="campaignResourceName">The resource name of the campaign to target.</param> // [START AddSitelinks_1] private static List <string> CreateExtensionFeedItems(GoogleAdsClient client, long customerId, string campaignResourceName) { // Get the ExtensionFeedItemServiceClient. ExtensionFeedItemServiceClient extensionFeedItemService = client.GetService(Services.V6.ExtensionFeedItemService); SitelinkFeedItem sitelinkFeedItem1 = CreateSitelinkFeedItem( "Store Hours", "http://www.example.com/storehours"); // Creates an ExtensionFeedItem from the SitelinkFeedItem. ExtensionFeedItem extensionFeedItem1 = new ExtensionFeedItem() { ExtensionType = ExtensionType.Sitelink, SitelinkFeedItem = sitelinkFeedItem1, TargetedCampaign = campaignResourceName }; List <ExtensionFeedItemOperation> operations = new List <ExtensionFeedItemOperation>(); // Creates an ExtensionFeedItemOperation and adds it to the operations List. operations.Add(new ExtensionFeedItemOperation() { Create = extensionFeedItem1 }); SitelinkFeedItem sitelinkFeedItem2 = CreateSitelinkFeedItem( "Thanksgiving Specials", "http://www.example.com/thanksgiving"); DateTime startTime = new DateTime(DateTime.Now.Year, 11, 20, 0, 0, 0); if (startTime < DateTime.Now) { // Move the startTime to next year if the current date is past November 20th. startTime = startTime.AddYears(1); } // Converts to a string in the required format. string startTimeString = startTime.ToString("yyyy-MM-dd hh:mm:ss"); // Use the same year as startTime when creating endTime. DateTime endTime = new DateTime(startTime.Year, 11, 27, 23, 59, 59); string unitedStates = ResourceNames.GeoTargetConstant(2840); ExtensionFeedItem extensionFeedItem2 = new ExtensionFeedItem() { ExtensionType = ExtensionType.Sitelink, SitelinkFeedItem = sitelinkFeedItem2, TargetedCampaign = campaignResourceName, // StartDateTime should be formatted in "yyyy-MM-dd hh:mm:ss" format. StartDateTime = startTime.ToString("yyyy-MM-dd hh:mm:ss"), // EndDateTime should be formatted in "yyyy-MM-dd hh:mm:ss" format. EndDateTime = endTime.ToString("yyyy-MM-dd hh:mm:ss"), // Targets this sitelink for United States only. // A list of country codes can be referenced here: // https://developers.google.com/adwords/api/docs/appendix/geotargeting TargetedGeoTargetConstant = ResourceNames.GeoTargetConstant(2840) }; operations.Add(new ExtensionFeedItemOperation() { Create = extensionFeedItem2 }); SitelinkFeedItem sitelinkFeedItem3 = CreateSitelinkFeedItem( "Wifi available", "http://www.example.com/mobile/wifi"); ExtensionFeedItem extensionFeedItem3 = new ExtensionFeedItem() { ExtensionType = ExtensionType.Sitelink, SitelinkFeedItem = sitelinkFeedItem3, TargetedCampaign = campaignResourceName, Device = FeedItemTargetDevice.Mobile, TargetedKeyword = new KeywordInfo() { Text = "free wifi", MatchType = KeywordMatchType.Broad } }; operations.Add(new ExtensionFeedItemOperation() { Create = extensionFeedItem3 }); SitelinkFeedItem sitelinkFeedItem4 = CreateSitelinkFeedItem( "Happy hours", "http://www.example.com/happyhours"); ExtensionFeedItem extensionFeedItem4 = new ExtensionFeedItem() { ExtensionType = ExtensionType.Sitelink, SitelinkFeedItem = sitelinkFeedItem4, TargetedCampaign = campaignResourceName, AdSchedules = { CreateAdScheduleInfo(DayOfWeekEnum.Types.DayOfWeek.Monday, 18, MinuteOfHour.Zero, 21, MinuteOfHour.Zero), CreateAdScheduleInfo(DayOfWeekEnum.Types.DayOfWeek.Tuesday, 18, MinuteOfHour.Zero, 21, MinuteOfHour.Zero), CreateAdScheduleInfo(DayOfWeekEnum.Types.DayOfWeek.Wednesday, 18, MinuteOfHour.Zero, 21, MinuteOfHour.Zero), CreateAdScheduleInfo(DayOfWeekEnum.Types.DayOfWeek.Thursday, 18, MinuteOfHour.Zero, 21, MinuteOfHour.Zero), CreateAdScheduleInfo(DayOfWeekEnum.Types.DayOfWeek.Friday, 18, MinuteOfHour.Zero, 21, MinuteOfHour.Zero), } }; operations.Add(new ExtensionFeedItemOperation() { Create = extensionFeedItem4 }); // Adds the ExtensionFeedItem. MutateExtensionFeedItemsResponse response = extensionFeedItemService.MutateExtensionFeedItems(customerId.ToString(), operations); Console.WriteLine($"Added {response.Results.Count}:"); List <string> resourceNames = new List <string>(); foreach (MutateExtensionFeedItemResult result in response.Results) { Console.WriteLine($"Created ExtensionFeedItems with " + $"resource name '{result.ResourceName}'."); resourceNames.Add(result.ResourceName); } return(resourceNames); }
/// <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) { using (CampaignExtensionSettingService campaignExtensionSettingService = (CampaignExtensionSettingService)user.GetService( AdWordsService.v201802.CampaignExtensionSettingService)) { Customer customer = null; using (CustomerService customerService = (CustomerService)user.GetService( AdWordsService.v201802.CustomerService)) { // Find the matching customer and its time zone. The getCustomers method // will return a single Customer object corresponding to the session's // clientCustomerId. customer = customerService.getCustomers()[0]; Console.WriteLine("Found customer ID {0:###-###-####} with time zone '{1}'.", customer.customerId, customer.dateTimeZone); } List <ExtensionFeedItem> extensions = new List <ExtensionFeedItem>(); // Create your sitelinks. SitelinkFeedItem sitelink1 = new SitelinkFeedItem() { sitelinkText = "Store Hours", sitelinkFinalUrls = new UrlList() { urls = new string[] { "http://www.example.com/storehours" } } }; extensions.Add(sitelink1); DateTime startOfThanksGiving = new DateTime(DateTime.Now.Year, 11, 20, 0, 0, 0); DateTime endOfThanksGiving = new DateTime(DateTime.Now.Year, 11, 27, 23, 59, 59); // Add check to make sure we don't create a sitelink with end date in the // past. if (DateTime.Now < endOfThanksGiving) { // Show the Thanksgiving specials link only from 20 - 27 Nov. SitelinkFeedItem sitelink2 = new SitelinkFeedItem() { sitelinkText = "Thanksgiving Specials", sitelinkFinalUrls = new UrlList() { urls = new string[] { "http://www.example.com/thanksgiving" } }, startTime = string.Format("{0} {1}", startOfThanksGiving.ToString("yyyyMMdd HHmmss"), customer.dateTimeZone), endTime = string.Format("{0} {1}", endOfThanksGiving.ToString("yyyyMMdd HHmmss"), customer.dateTimeZone), // Target this sitelink for United States only. See // https://developers.google.com/adwords/api/docs/appendix/geotargeting // for valid geolocation codes. geoTargeting = new Location() { id = 2840 }, // Restrict targeting only to people physically within the United States. // Otherwise, this could also show to people interested in the United States // but not physically located there. geoTargetingRestriction = new FeedItemGeoRestriction() { geoRestriction = GeoRestriction.LOCATION_OF_PRESENCE } }; extensions.Add(sitelink2); } // Show the wifi details primarily for high end mobile users. SitelinkFeedItem sitelink3 = new SitelinkFeedItem() { sitelinkText = "Wifi available", sitelinkFinalUrls = new UrlList() { urls = 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 }, // Target this sitelink for the keyword "free wifi". keywordTargeting = new Keyword() { text = "free wifi", matchType = KeywordMatchType.BROAD } }; extensions.Add(sitelink3); // Show the happy hours link only during Mon - Fri 6PM to 9PM. SitelinkFeedItem sitelink4 = new SitelinkFeedItem() { sitelinkText = "Happy hours", sitelinkFinalUrls = new UrlList() { urls = new string[] { "http://www.example.com/happyhours" }, }, scheduling = new FeedItemSchedule[] { new FeedItemSchedule() { dayOfWeek = DayOfWeek.MONDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO }, new FeedItemSchedule() { dayOfWeek = DayOfWeek.TUESDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO }, new FeedItemSchedule() { dayOfWeek = DayOfWeek.WEDNESDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO }, new FeedItemSchedule() { dayOfWeek = DayOfWeek.THURSDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO }, new FeedItemSchedule() { dayOfWeek = DayOfWeek.FRIDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO } } }; extensions.Add(sitelink4); // 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 = extensions.ToArray() }; 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); } } }
/// <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.v201509.CampaignExtensionSettingService); CustomerService customerService = (CustomerService) user.GetService( AdWordsService.v201509.CustomerService); Customer customer = customerService.get(); List<ExtensionFeedItem> extensions = new List<ExtensionFeedItem>(); // Create your sitelinks. SitelinkFeedItem sitelink1 = new SitelinkFeedItem() { sitelinkText = "Store Hours", sitelinkFinalUrls = new string[] { "http://www.example.com/storehours" } }; extensions.Add(sitelink1); DateTime startOfThanksGiving = new DateTime(DateTime.Now.Year, 11, 20, 0, 0, 0); DateTime endOfThanksGiving = new DateTime(DateTime.Now.Year, 11, 27, 23, 59, 59); // Add check to make sure we don't create a sitelink with end date in the // past. if (DateTime.Now < endOfThanksGiving) { // 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} {1}", startOfThanksGiving.ToString("yyyyMMdd HHmmss"), customer.dateTimeZone), endTime = string.Format("{0} {1}", endOfThanksGiving.ToString("yyyyMMdd HHmmss"), customer.dateTimeZone) }; extensions.Add(sitelink2); } // 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 } }; extensions.Add(sitelink3); // 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 = DayOfWeek.MONDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO }, new FeedItemSchedule() { dayOfWeek = DayOfWeek.TUESDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO }, new FeedItemSchedule() { dayOfWeek = DayOfWeek.WEDNESDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO }, new FeedItemSchedule() { dayOfWeek = DayOfWeek.THURSDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO }, new FeedItemSchedule() { dayOfWeek = DayOfWeek.FRIDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO } } }; extensions.Add(sitelink4); // 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 = extensions.ToArray() }; 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); } }
/// <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.v201502.CampaignExtensionSettingService); // 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 EST", DateTime.Now.Year), endTime = string.Format("{0}1127 235959 EST", DateTime.Now.Year) }; // 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.v201502.DayOfWeek.MONDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO }, new FeedItemSchedule() { dayOfWeek = AdWords.v201502.DayOfWeek.TUESDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO }, new FeedItemSchedule() { dayOfWeek = AdWords.v201502.DayOfWeek.WEDNESDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO }, new FeedItemSchedule() { dayOfWeek = AdWords.v201502.DayOfWeek.THURSDAY, startHour = 18, startMinute = MinuteOfHour.ZERO, endHour = 21, endMinute = MinuteOfHour.ZERO }, new FeedItemSchedule() { dayOfWeek = AdWords.v201502.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 ex) { throw new System.ApplicationException("Failed to create extension settings.", ex); } }
/// <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.v201509.CampaignExtensionSettingService); CampaignExtensionSettingOperation operation = new CampaignExtensionSettingOperation() { operand = extensionSetting, @operator = Operator.ADD }; campaignExtensionSettingService.mutate(new CampaignExtensionSettingOperation[] { operation }); return; }
public void MergeFrom(ExtensionFeedItem other) { if (other == null) { return; } if (other.ResourceName.Length != 0) { ResourceName = other.ResourceName; } if (other.ExtensionType != 0) { ExtensionType = other.ExtensionType; } if (other.startDateTime_ != null) { if (startDateTime_ == null || other.StartDateTime != "") { StartDateTime = other.StartDateTime; } } if (other.endDateTime_ != null) { if (endDateTime_ == null || other.EndDateTime != "") { EndDateTime = other.EndDateTime; } } adSchedules_.Add(other.adSchedules_); if (other.Device != 0) { Device = other.Device; } if (other.Status != 0) { Status = other.Status; } switch (other.ExtensionCase) { case ExtensionOneofCase.SitelinkFeedItem: if (SitelinkFeedItem == null) { SitelinkFeedItem = new global::Google.Ads.GoogleAds.V1.Common.SitelinkFeedItem(); } SitelinkFeedItem.MergeFrom(other.SitelinkFeedItem); break; case ExtensionOneofCase.StructuredSnippetFeedItem: if (StructuredSnippetFeedItem == null) { StructuredSnippetFeedItem = new global::Google.Ads.GoogleAds.V1.Common.StructuredSnippetFeedItem(); } StructuredSnippetFeedItem.MergeFrom(other.StructuredSnippetFeedItem); break; case ExtensionOneofCase.AppFeedItem: if (AppFeedItem == null) { AppFeedItem = new global::Google.Ads.GoogleAds.V1.Common.AppFeedItem(); } AppFeedItem.MergeFrom(other.AppFeedItem); break; case ExtensionOneofCase.CallFeedItem: if (CallFeedItem == null) { CallFeedItem = new global::Google.Ads.GoogleAds.V1.Common.CallFeedItem(); } CallFeedItem.MergeFrom(other.CallFeedItem); break; case ExtensionOneofCase.CalloutFeedItem: if (CalloutFeedItem == null) { CalloutFeedItem = new global::Google.Ads.GoogleAds.V1.Common.CalloutFeedItem(); } CalloutFeedItem.MergeFrom(other.CalloutFeedItem); break; case ExtensionOneofCase.TextMessageFeedItem: if (TextMessageFeedItem == null) { TextMessageFeedItem = new global::Google.Ads.GoogleAds.V1.Common.TextMessageFeedItem(); } TextMessageFeedItem.MergeFrom(other.TextMessageFeedItem); break; case ExtensionOneofCase.PriceFeedItem: if (PriceFeedItem == null) { PriceFeedItem = new global::Google.Ads.GoogleAds.V1.Common.PriceFeedItem(); } PriceFeedItem.MergeFrom(other.PriceFeedItem); break; case ExtensionOneofCase.PromotionFeedItem: if (PromotionFeedItem == null) { PromotionFeedItem = new global::Google.Ads.GoogleAds.V1.Common.PromotionFeedItem(); } PromotionFeedItem.MergeFrom(other.PromotionFeedItem); break; case ExtensionOneofCase.LocationFeedItem: if (LocationFeedItem == null) { LocationFeedItem = new global::Google.Ads.GoogleAds.V1.Common.LocationFeedItem(); } LocationFeedItem.MergeFrom(other.LocationFeedItem); break; case ExtensionOneofCase.AffiliateLocationFeedItem: if (AffiliateLocationFeedItem == null) { AffiliateLocationFeedItem = new global::Google.Ads.GoogleAds.V1.Common.AffiliateLocationFeedItem(); } AffiliateLocationFeedItem.MergeFrom(other.AffiliateLocationFeedItem); break; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); }
public override int GetHashCode() { int hash = 1; if (ResourceName.Length != 0) { hash ^= ResourceName.GetHashCode(); } if (ExtensionType != 0) { hash ^= ExtensionType.GetHashCode(); } if (startDateTime_ != null) { hash ^= StartDateTime.GetHashCode(); } if (endDateTime_ != null) { hash ^= EndDateTime.GetHashCode(); } hash ^= adSchedules_.GetHashCode(); if (Device != 0) { hash ^= Device.GetHashCode(); } if (Status != 0) { hash ^= Status.GetHashCode(); } if (extensionCase_ == ExtensionOneofCase.SitelinkFeedItem) { hash ^= SitelinkFeedItem.GetHashCode(); } if (extensionCase_ == ExtensionOneofCase.StructuredSnippetFeedItem) { hash ^= StructuredSnippetFeedItem.GetHashCode(); } if (extensionCase_ == ExtensionOneofCase.AppFeedItem) { hash ^= AppFeedItem.GetHashCode(); } if (extensionCase_ == ExtensionOneofCase.CallFeedItem) { hash ^= CallFeedItem.GetHashCode(); } if (extensionCase_ == ExtensionOneofCase.CalloutFeedItem) { hash ^= CalloutFeedItem.GetHashCode(); } if (extensionCase_ == ExtensionOneofCase.TextMessageFeedItem) { hash ^= TextMessageFeedItem.GetHashCode(); } if (extensionCase_ == ExtensionOneofCase.PriceFeedItem) { hash ^= PriceFeedItem.GetHashCode(); } if (extensionCase_ == ExtensionOneofCase.PromotionFeedItem) { hash ^= PromotionFeedItem.GetHashCode(); } if (extensionCase_ == ExtensionOneofCase.LocationFeedItem) { hash ^= LocationFeedItem.GetHashCode(); } if (extensionCase_ == ExtensionOneofCase.AffiliateLocationFeedItem) { hash ^= AffiliateLocationFeedItem.GetHashCode(); } hash ^= (int)extensionCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return(hash); }
/// <summary> /// Updates Site Link Extension at Campaign Level /// </summary> /// <param name="user">Adwords User Object</param> /// <param name="sitelinkFeedItem">SiteLinkFeedItem containing Values to be update</param> /// <param name="campaignId">Campaign ID</param> /// <returns>Campaign Extension Setting Object with Updated Values</returns> public CampaignExtensionSetting UpdateSiteLinkAtCampaignLevel(AdWordsUser user, SitelinkFeedItem sitelinkFeedItem, long campaignId) { CampaignExtensionSettingService campaignExtensionSettingService = (CampaignExtensionSettingService)user.GetService(AdWordsService.v201809.CampaignExtensionSettingService); ExtensionFeedItem[] extensionFeedItems = new ExtensionFeedItem[] { sitelinkFeedItem }; ExtensionSetting extensionSetting = new ExtensionSetting(); extensionSetting.extensions = extensionFeedItems; CampaignExtensionSetting campaignExtensionSetting = new CampaignExtensionSetting(); campaignExtensionSetting.campaignId = campaignId; campaignExtensionSetting.extensionType = FeedType.SITELINK; campaignExtensionSetting.extensionSetting = extensionSetting; CampaignExtensionSettingOperation campaignExtensionSettingOperation = new CampaignExtensionSettingOperation(); campaignExtensionSettingOperation.operand = campaignExtensionSetting; campaignExtensionSettingOperation.@operator = Operator.SET; try { // Add the extensions. CampaignExtensionSettingReturnValue campaignExtensionSettingReturnValue = campaignExtensionSettingService.mutate(new [] { campaignExtensionSettingOperation }); if (campaignExtensionSettingReturnValue.value != null && campaignExtensionSettingReturnValue.value.Length > 0) { CampaignExtensionSetting modifiedExtensionItem = campaignExtensionSettingReturnValue.value[0]; Logger.Log(Logger.LogType.INFO, "Modification Successful for Feed(ID): " + sitelinkFeedItem.feedId + " with FeedItem(ID): " + sitelinkFeedItem.feedItemId); return(modifiedExtensionItem); } else { Logger.Log(Logger.LogType.WARNING, "Nothing Modified for Feed(ID): " + sitelinkFeedItem.feedId + " with FeedItem(ID): " + sitelinkFeedItem.feedItemId); return(null); } } catch (AdWordsApiException ex) { Logger.Log(Logger.LogType.EXCEPTION, Environment.NewLine + ex.Message + Environment.NewLine + ex.InnerException); return(null); } }
/// <summary> /// Modifies SiteLink Extension at Customer Level /// </summary> /// <param name="user">Adwords User Object</param> /// <param name="sitelinkFeedItem">SiteLinkFeedItem with Details</param> /// <returns>Updated CustomerExtensionSettings</returns> public CustomerExtensionSetting UpdateSiteLinkAtCustomerLevelUsingCustExtSetService(AdWordsUser user, SitelinkFeedItem sitelinkFeedItem) { CustomerExtensionSettingService customerExtensionSettingService = (CustomerExtensionSettingService)user.GetService(AdWordsService.v201809.CustomerExtensionSettingService); ExtensionFeedItem[] extensionFeedItems = new[] { sitelinkFeedItem }; ExtensionSetting extensionSetting = new ExtensionSetting(); extensionSetting.extensions = extensionFeedItems; CustomerExtensionSetting customerExtensionSetting = new CustomerExtensionSetting(); customerExtensionSetting.extensionType = FeedType.SITELINK; customerExtensionSetting.extensionSetting = extensionSetting; CustomerExtensionSettingOperation modifyOperation = new CustomerExtensionSettingOperation(); modifyOperation.operand = customerExtensionSetting; modifyOperation.@operator = Operator.SET; try { CustomerExtensionSettingReturnValue returnValue = customerExtensionSettingService.mutate(new[] { modifyOperation }); if (returnValue.value != null && returnValue.value.Length > 0) { CustomerExtensionSetting modifiedExtensionSetting = returnValue.value[0]; Logger.Log(Logger.LogType.INFO, "Modification Successful for Feed(ID): " + sitelinkFeedItem.feedId + " with FeedItem(ID): " + sitelinkFeedItem.feedItemId); return(modifiedExtensionSetting); } else { Logger.Log(Logger.LogType.WARNING, "Nothing Modified for Feed(ID): " + sitelinkFeedItem.feedId + " with FeedItem(ID): " + sitelinkFeedItem.feedItemId); return(null); } } catch (AdWordsApiException ex) { Logger.Log(Logger.LogType.EXCEPTION, Environment.NewLine + ex.Message + Environment.NewLine + ex.InnerException); return(null); } }