Пример #1
0
    private static void createSiteLinksCampaignFeed(AdWordsUser user,
      SiteLinksDataHolder siteLinksData, long campaignId) {
      // Get the CampaignFeedService.
      CampaignFeedService campaignFeedService =
        (CampaignFeedService) user.GetService(AdWordsService.v201402.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);
      }
    }