Example #1
0
        /// <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);
            }
        }
Example #4
0
        // [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);
      }
    }
Example #7
0
        /// <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);
        }
Example #11
0
        /// <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);
            }
        }
Example #12
0
        /// <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);
            }
        }