/// <summary>
    /// Gets the campaignfeeds that use a particular feed.
    /// </summary>
    /// <param name="user">The user that owns the feed.</param>
    /// <param name="feed">The feed for which campaign feeds should be
    /// retrieved.</param>
    /// <param name="placeholderType">The type of placeholder to restrict
    /// search.</param>
    /// <returns>The list of campaignfeeds.</returns>
    private CampaignFeed[] GetCampaignFeeds(AdWordsUser user, Feed feed, int placeholderType) {
      CampaignFeedService campaignFeedService = (CampaignFeedService) user.GetService(
          AdWordsService.v201509.CampaignFeedService);

      CampaignFeedPage page = campaignFeedService.query(string.Format(
          "SELECT CampaignId, MatchingFunction, PlaceholderTypes where Status='ENABLED' " +
          "and FeedId = '{0}' and PlaceholderTypes CONTAINS_ANY[{1}]", feed.id, placeholderType));
      return page.entries;
    }
    /// <summary>
    /// Deletes a campaign feed.
    /// </summary>
    /// <param name="user">The user.</param>
    /// <param name="campaignFeed">The campaign feed.</param>
    /// <returns></returns>
    private CampaignFeed DeleteCampaignFeed(AdWordsUser user, CampaignFeed campaignFeed) {
      CampaignFeedService campaignFeedService = (CampaignFeedService) user.GetService(
          AdWordsService.v201509.CampaignFeedService);

      CampaignFeedOperation operation = new CampaignFeedOperation() {
        operand = campaignFeed,
        @operator = Operator.REMOVE
      };

      return campaignFeedService.mutate(new CampaignFeedOperation[] { operation }).value[0];
    }
Пример #3
0
        private static void CreateSitelinksCampaignFeed(AdWordsUser user,
                                                        SitelinksDataHolder sitelinksData, long campaignId)
        {
            using (CampaignFeedService campaignFeedService =
                       (CampaignFeedService)user.GetService(AdWordsService.v201809.CampaignFeedService))
            {
                // Construct a matching function that associates the sitelink feeditems
                // to the campaign, and set the device preference to Mobile. See the
                // matching function guide at
                // https://developers.google.com/adwords/api/docs/guides/feed-matching-functions
                // for more details.
                string matchingFunctionString = string.Format(@"
          AND(
            IN(FEED_ITEM_ID, {{{0}}}),
            EQUALS(CONTEXT.DEVICE, 'Mobile')
          )", string.Join(",", sitelinksData.FeedItemIds));

                CampaignFeed campaignFeed = new CampaignFeed()
                {
                    feedId           = sitelinksData.FeedId,
                    campaignId       = campaignId,
                    matchingFunction = new Function()
                    {
                        functionString = matchingFunctionString
                    },
                    // Specifying placeholder types on the CampaignFeed allows the same feed
                    // to be used for different placeholders in different Campaigns.
                    placeholderTypes = new int[]
                    {
                        PLACEHOLDER_SITELINKS
                    }
                };

                CampaignFeedOperation operation = new CampaignFeedOperation()
                {
                    operand   = campaignFeed,
                    @operator = Operator.ADD
                };

                CampaignFeedReturnValue result = campaignFeedService.mutate(
                    new CampaignFeedOperation[]
                {
                    operation
                });

                foreach (CampaignFeed savedCampaignFeed in result.value)
                {
                    Console.WriteLine("Campaign with ID {0} was associated with feed with ID {1}",
                                      savedCampaignFeed.campaignId, savedCampaignFeed.feedId);
                }
            }
        }
Пример #4
0
        /// <summary>
        /// Deletes a campaign feed.
        /// </summary>
        /// <param name="user">The AdWords user.</param>
        /// <param name="campaignFeed">The campaign feed.</param>
        /// <returns></returns>
        private CampaignFeed DeleteCampaignFeed(AdWordsUser user, CampaignFeed campaignFeed)
        {
            using (CampaignFeedService campaignFeedService = (CampaignFeedService)user.GetService(
                       AdWordsService.v201710.CampaignFeedService)) {
                CampaignFeedOperation operation = new CampaignFeedOperation()
                {
                    operand   = campaignFeed,
                    @operator = Operator.REMOVE
                };

                CampaignFeed retval = campaignFeedService.mutate(
                    new CampaignFeedOperation[] { operation }).value[0];
                return(retval);
            }
        }
Пример #5
0
        private static void createSiteLinksCampaignFeed(AdWordsUser user,
                                                        SiteLinksDataHolder siteLinksData, long campaignId)
        {
            // Get the CampaignFeedService.
            CampaignFeedService campaignFeedService =
                (CampaignFeedService)user.GetService(AdWordsService.v201406.CampaignFeedService);

            // Map the feed item ids to the campaign using an IN operation.
            RequestContextOperand feedItemRequestContextOperand = new RequestContextOperand();

            feedItemRequestContextOperand.contextType = RequestContextOperandContextType.FEED_ITEM_ID;

            List <FunctionArgumentOperand> feedItemOperands = new List <FunctionArgumentOperand>();

            foreach (long feedItemId in siteLinksData.SiteLinkFeedItemIds)
            {
                ConstantOperand feedItemOperand = new ConstantOperand();
                feedItemOperand.longValue = feedItemId;
                feedItemOperand.type      = ConstantOperandConstantType.LONG;
                feedItemOperands.Add(feedItemOperand);
            }

            Function feedItemfunction = new Function();

            feedItemfunction.lhsOperand = new FunctionArgumentOperand[] { feedItemRequestContextOperand };
            feedItemfunction.@operator  = FunctionOperator.IN;
            feedItemfunction.rhsOperand = feedItemOperands.ToArray();

            // Optional: to target to a platform, define a function and 'AND' it with
            // the feed item ID link:
            RequestContextOperand platformRequestContextOperand = new RequestContextOperand();

            platformRequestContextOperand.contextType = RequestContextOperandContextType.DEVICE_PLATFORM;

            ConstantOperand platformOperand = new ConstantOperand();

            platformOperand.stringValue = "Mobile";
            platformOperand.type        = ConstantOperandConstantType.STRING;

            Function platformFunction = new Function();

            platformFunction.lhsOperand = new FunctionArgumentOperand[] { platformRequestContextOperand };
            platformFunction.@operator  = FunctionOperator.EQUALS;
            platformFunction.rhsOperand = new FunctionArgumentOperand[] { platformOperand };

            // Combine the two functions using an AND operation.
            FunctionOperand feedItemFunctionOperand = new FunctionOperand();

            feedItemFunctionOperand.value = feedItemfunction;

            FunctionOperand platformFunctionOperand = new FunctionOperand();

            platformFunctionOperand.value = platformFunction;

            Function combinedFunction = new Function();

            combinedFunction.@operator  = FunctionOperator.AND;
            combinedFunction.lhsOperand = new FunctionArgumentOperand[] {
                feedItemFunctionOperand, platformFunctionOperand
            };

            CampaignFeed campaignFeed = new CampaignFeed();

            campaignFeed.feedId           = siteLinksData.SiteLinksFeedId;
            campaignFeed.campaignId       = campaignId;
            campaignFeed.matchingFunction = combinedFunction;
            // Specifying placeholder types on the CampaignFeed allows the same feed
            // to be used for different placeholders in different Campaigns.
            campaignFeed.placeholderTypes = new int[] { PLACEHOLDER_SITELINKS };

            CampaignFeedOperation operation = new CampaignFeedOperation();

            operation.operand   = campaignFeed;
            operation.@operator = Operator.ADD;
            CampaignFeedReturnValue result =
                campaignFeedService.mutate(new CampaignFeedOperation[] { operation });

            foreach (CampaignFeed savedCampaignFeed in result.value)
            {
                Console.WriteLine("Campaign with ID {0} was associated with feed with ID {1}",
                                  savedCampaignFeed.campaignId, savedCampaignFeed.feedId);
            }
        }