/// <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]; }
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); } } }
/// <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); } }
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); } }