Пример #1
0
        /// <summary>
        /// Gets the platform restrictions for sitelinks in a campaign.
        /// </summary>
        /// <param name="campaignFeed">The campaign feed.</param>
        /// <returns>The platform restrictions.</returns>
        private ExtensionSettingPlatform GetPlatformRestrictionsForCampaign(
            CampaignFeed campaignFeed)
        {
            string platformRestrictions = "NONE";

            if (campaignFeed.matchingFunction.@operator == FunctionOperator.AND)
            {
                foreach (FunctionArgumentOperand argument in campaignFeed.matchingFunction.lhsOperand)
                {
                    // Check if matchingFunction is of the form EQUALS(CONTEXT.DEVICE, 'Mobile').
                    if (argument is FunctionOperand)
                    {
                        FunctionOperand operand = (argument as FunctionOperand);
                        if (operand.value.@operator == FunctionOperator.EQUALS)
                        {
                            RequestContextOperand requestContextOperand = operand.value.lhsOperand[0] as
                                                                          RequestContextOperand;
                            if (requestContextOperand != null && requestContextOperand.contextType ==
                                RequestContextOperandContextType.DEVICE_PLATFORM)
                            {
                                platformRestrictions = (operand.value.rhsOperand[0] as ConstantOperand)
                                                       .stringValue;
                            }
                        }
                    }
                }
            }

            return((ExtensionSettingPlatform)Enum.Parse(typeof(ExtensionSettingPlatform),
                                                        platformRestrictions, true));
        }
    /// <summary>
    /// Gets the list of feed items that are used by a campaign through a given
    /// campaign feed.
    /// </summary>
    /// <param name="campaignFeed">The campaign feed.</param>
    /// <returns>The list of feed items.</returns>
    private List<long> GetFeedItemsForCampaign(CampaignFeed campaignFeed) {
      List<long> feedItems = new List<long>();

      switch (campaignFeed.matchingFunction.@operator) {
        case FunctionOperator.IN:
          // Check if matchingFunction is of the form IN(FEED_ITEM_ID,{xxx,xxx}).
          // Extract feedItems if applicable.
          feedItems.AddRange(GetFeedItemsFromArgument(campaignFeed.matchingFunction));

          break;

        case FunctionOperator.AND:
          // Check each condition.

          foreach (FunctionArgumentOperand argument in campaignFeed.matchingFunction.lhsOperand) {
            // Check if matchingFunction is of the form IN(FEED_ITEM_ID,{xxx,xxx}).
            // Extract feedItems if applicable.
            if (argument is FunctionOperand) {
              FunctionOperand operand = (argument as FunctionOperand);
              if (operand.value.@operator == FunctionOperator.IN) {
                feedItems.AddRange(GetFeedItemsFromArgument(operand.value));
              }
            }
          }
          break;

        default:
          // There are no other matching functions involving feeditem ids.
          break;
      }

      return feedItems;
    }
Пример #3
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);
            }
        }