/// <summary> /// Runs the code example. /// </summary> /// <param name="client">The Google Ads client.</param> /// <param name="customerId">The Google Ads customer ID for which the call is made.</param> /// <param name="campaignId">The ID of the campaign for which shared criterion is updated. /// </param> public void Run(GoogleAdsClient client, long customerId, long campaignId) { SharedSetServiceClient sharedSetService = client.GetService( Services.V0.SharedSetService); SharedCriterionServiceClient sharedCriterionService = client.GetService(Services.V0.SharedCriterionService); CampaignSharedSetServiceClient campaignSharedSetService = client.GetService(Services.V0.CampaignSharedSetService); try { // Keywords to create a shared set of. string[] keywords = new string[] { "mars cruise", "mars hotels" }; // Create shared negative keyword set. SharedSet sharedSet = new SharedSet() { Name = "API Negative keyword list - " + ExampleUtilities.GetRandomString(), Type = SharedSetType.NegativeKeywords, }; SharedSetOperation operation = new SharedSetOperation() { Create = sharedSet }; MutateSharedSetsResponse sharedSetResponse = sharedSetService.MutateSharedSets( customerId.ToString(), new SharedSetOperation[] { operation }); string sharedSetResourceName = sharedSetResponse.Results[0].ResourceName; Console.WriteLine($"Created shared set {sharedSetResourceName}."); // Create negative keywords in the shared set. List <SharedCriterionOperation> criterionOperations = new List <SharedCriterionOperation>(); foreach (string keyword in keywords) { SharedCriterion sharedCriterion = new SharedCriterion() { Keyword = new KeywordInfo() { Text = keyword, MatchType = KeywordMatchType.Broad }, SharedSet = sharedSetResourceName }; criterionOperations.Add(new SharedCriterionOperation() { Create = sharedCriterion }); } MutateSharedCriteriaResponse criteriaResponse = sharedCriterionService.MutateSharedCriteria( customerId.ToString(), criterionOperations); foreach (MutateSharedCriterionResult result in criteriaResponse.Results) { Console.WriteLine($"Created shared criterion {result.ResourceName}."); } // Attach shared set to campaign. CampaignSharedSet campaignSet = new CampaignSharedSet() { Campaign = ResourceNames.Campaign(customerId, campaignId), SharedSet = sharedSetResourceName }; CampaignSharedSetOperation sharedSetoperation = new CampaignSharedSetOperation() { Create = campaignSet }; MutateCampaignSharedSetsResponse response = campaignSharedSetService.MutateCampaignSharedSets(customerId.ToString(), new CampaignSharedSetOperation[] { sharedSetoperation }); Console.WriteLine("Created campaign shared set {0}.", response.Results[0].ResourceName); } catch (GoogleAdsException e) { Console.WriteLine("Failure:"); Console.WriteLine($"Message: {e.Message}"); Console.WriteLine($"Failure: {e.Failure}"); Console.WriteLine($"Request ID: {e.RequestId}"); } }
/// <summary> /// Adds a set of keywords to a shared set. /// </summary> /// <param name="user">The AdWords user.</param> /// <param name="sharedSetId">The shared set id.</param> /// <param name="keywordTexts">The keywords to be added to the shared set.</param> /// <returns>The newly added set of shared criteria.</returns> public SharedCriterion[] AddKeywordsToSharedSet(AdWordsUser user, long sharedSetId, string[] keywordTexts) { // Get the SharedCriterionService. SharedCriterionService sharedCriterionService = (SharedCriterionService) user.GetService(AdWordsService.v201601.SharedCriterionService); List<SharedCriterionOperation> operations = new List<SharedCriterionOperation>(); foreach (string keywordText in keywordTexts) { Keyword keyword = new Keyword(); keyword.text = keywordText; keyword.matchType = KeywordMatchType.BROAD; SharedCriterion sharedCriterion = new SharedCriterion(); sharedCriterion.criterion = keyword; sharedCriterion.negative = true; sharedCriterion.sharedSetId = sharedSetId; SharedCriterionOperation operation = new SharedCriterionOperation(); operation.@operator = Operator.ADD; operation.operand = sharedCriterion; operations.Add(operation); } SharedCriterionReturnValue retval = sharedCriterionService.mutate(operations.ToArray()); return retval.value; }
/// <summary> /// Runs the code example. /// </summary> /// <param name="client">The Google Ads client.</param> /// <param name="customerId">The Google Ads customer ID for which the call is made.</param> /// <param name="campaignId">The ID of the campaign for which shared criterion is updated. /// </param> public void Run(GoogleAdsClient client, long customerId, long campaignId) { try { SharedCriterionServiceClient sharedCriterionService = client.GetService( Services.V3.SharedCriterionService); GoogleAdsServiceClient googleAdsService = client.GetService( Services.V3.GoogleAdsService); List <long?> sharedSetIds = new List <long?>(); List <string> criterionResources = new List <string>(); // First, retrieve all shared sets associated with the campaign. string sharedSetQuery = $"SELECT shared_set.id, shared_set.name FROM " + $"campaign_shared_set WHERE campaign.id = {campaignId}"; PagedEnumerable <SearchGoogleAdsResponse, GoogleAdsRow> sharedSetResponse = googleAdsService.Search(customerId.ToString(), sharedSetQuery); // Display the results. foreach (GoogleAdsRow googleAdsRow in sharedSetResponse) { SharedSet sharedSet = googleAdsRow.SharedSet; Console.WriteLine("Campaign shared set ID {0} and name '{1}' was found.", sharedSet.Id, sharedSet.Name); sharedSetIds.Add(sharedSet.Id); } // Next, retrieve shared criteria for all found shared sets. string sharedCriterionQuery = "SELECT shared_criterion.type, shared_criterion.keyword.text, " + "shared_criterion.keyword.match_type, shared_set.id FROM shared_criterion " + $"WHERE shared_set.id IN(" + string.Join(",", sharedSetIds.ConvertAll(x => x.ToString())) + ")"; PagedEnumerable <SearchGoogleAdsResponse, GoogleAdsRow> sharedCriterionResponse = googleAdsService.Search(customerId.ToString(), sharedCriterionQuery); // Display the results. foreach (GoogleAdsRow googleAdsRow in sharedCriterionResponse) { SharedCriterion sharedCriterion = googleAdsRow.SharedCriterion; if (sharedCriterion.Type == CriterionType.Keyword) { Console.WriteLine("Shared criterion with resource name '{0}' for " + "negative keyword with text '{1}' and match type '{2}' was found.", sharedCriterion.ResourceName, sharedCriterion.Keyword.Text, sharedCriterion.Keyword.MatchType); } else { Console.WriteLine("Shared criterion with resource name '{0}' was found.", sharedCriterion.ResourceName); } criterionResources.Add(sharedCriterion.ResourceName); } // Finally, remove the criteria. List <SharedCriterionOperation> operations = new List <SharedCriterionOperation>(); foreach (string criterionResource in criterionResources) { SharedCriterionOperation operation = new SharedCriterionOperation() { Remove = criterionResource }; operations.Add(operation); } MutateSharedCriteriaResponse response = sharedCriterionService.MutateSharedCriteria( customerId.ToString(), operations); foreach (MutateSharedCriterionResult result in response.Results) { Console.WriteLine($"Removed shared criterion {result.ResourceName}."); } } catch (GoogleAdsException e) { Console.WriteLine("Failure:"); Console.WriteLine($"Message: {e.Message}"); Console.WriteLine($"Failure: {e.Failure}"); Console.WriteLine($"Request ID: {e.RequestId}"); throw; } }