AI-generated Key Takeaways
-
This code example demonstrates how to add an existing label to a list of campaigns using the Google Ads API.
-
The process involves creating a
CampaignLabelOperationfor each campaign and then sending a mutate request to the API. -
The required parameters for this operation are the customer ID, a list of campaign IDs, and the ID of the label to be added.
-
The examples are provided in Java, C#, PHP, Python, Perl, and Ruby.
Java
// Copyright 2019 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package com.google.ads.googleads.examples.campaignmanagement ; import com.beust.jcommander.Parameter ; import com.google.ads.googleads.examples.utils.ArgumentNames ; import com.google.ads.googleads.examples.utils.CodeSampleParams ; import com.google.ads.googleads.lib.GoogleAdsClient ; import com.google.ads.googleads.v22.errors.GoogleAdsError ; import com.google.ads.googleads.v22.errors.GoogleAdsException ; import com.google.ads.googleads.v22.resources.CampaignLabel ; import com.google.ads.googleads.v22.services.CampaignLabelOperation ; import com.google.ads.googleads.v22.services.CampaignLabelServiceClient ; import com.google.ads.googleads.v22.services.MutateCampaignLabelResult ; import com.google.ads.googleads.v22.services.MutateCampaignLabelsResponse ; import com.google.ads.googleads.v22.utils.ResourceNames ; import java.io.FileNotFoundException ; import java.io.IOException ; import java.util.ArrayList ; import java.util.Arrays ; import java.util.List ; /** Adds a campaign label to a list of campaigns. */ public class AddCampaignLabels { private static class AddCampaignLabelsParams extends CodeSampleParams { @Parameter ( names = ArgumentNames . CUSTOMER_ID , required = true ) private Long customerId ; @Parameter ( names = ArgumentNames . CAMPAIGN_IDS , required = true ) private List<Long> campaignIds = new ArrayList <> (); @Parameter ( names = ArgumentNames . LABEL_ID , required = true ) private Long labelId ; } public static void main ( String [] args ) throws IOException { AddCampaignLabelsParams params = new AddCampaignLabelsParams (); if ( ! params . parseArguments ( args )) { // Either pass the required parameters for this example on the command line, or insert them // into the code here. See the parameter class definition above for descriptions. params . customerId = Long . parseLong ( "INSERT_CUSTOMER_ID_HERE" ); params . campaignIds = Arrays . asList ( Long . valueOf ( "INSERT_CAMPAIGN_ID_HERE" ), Long . valueOf ( "INSERT_CAMPAIGN_ID_HERE" )); params . labelId = Long . parseLong ( "INSERT_LABEL_ID_HERE" ); } GoogleAdsClient googleAdsClient = null ; try { googleAdsClient = GoogleAdsClient . newBuilder (). fromPropertiesFile (). build (); } catch ( FileNotFoundException fnfe ) { System . err . printf ( "Failed to load GoogleAdsClient configuration from file. Exception: %s%n" , fnfe ); System . exit ( 1 ); } catch ( IOException ioe ) { System . err . printf ( "Failed to create GoogleAdsClient. Exception: %s%n" , ioe ); System . exit ( 1 ); } try { new AddCampaignLabels () . runExample ( googleAdsClient , params . customerId , params . campaignIds , params . labelId ); } catch ( GoogleAdsException gae ) { // GoogleAdsException is the base class for most exceptions thrown by an API request. // Instances of this exception have a message and a GoogleAdsFailure that contains a // collection of GoogleAdsErrors that indicate the underlying causes of the // GoogleAdsException. System . err . printf ( "Request ID %s failed due to GoogleAdsException. Underlying errors:%n" , gae . getRequestId ()); int i = 0 ; for ( GoogleAdsError googleAdsError : gae . getGoogleAdsFailure (). getErrorsList ()) { System . err . printf ( " Error %d: %s%n" , i ++ , googleAdsError ); } System . exit ( 1 ); } } /** * Runs the example. * * @param googleAdsClient the Google Ads API client. * @param customerId the client customer ID. * @param campaignIds the IDs of the campaigns to which the label will be added. * @param labelId the ID of the label to attach to campaigns. * @throws GoogleAdsException if an API request failed with one or more service errors. */ private void runExample ( GoogleAdsClient googleAdsClient , long customerId , List<Long> campaignIds , Long labelId ) { // Gets the resource name of the label to be added across all given campaigns. String labelResourceName = ResourceNames . label ( customerId , labelId ); List<CampaignLabelOperation> operations = new ArrayList <> ( campaignIds . size ()); // Creates a campaign label operation for each campaign. for ( Long campaignId : campaignIds ) { // Gets the resource name of the given campaign. String campaignResourceName = ResourceNames . campaign ( customerId , campaignId ); // Creates the campaign label. CampaignLabel campaignLabel = CampaignLabel . newBuilder () . setCampaign ( campaignResourceName ) . setLabel ( labelResourceName ) . build (); operations . add ( CampaignLabelOperation . newBuilder (). setCreate ( campaignLabel ). build ()); } try ( CampaignLabelServiceClient campaignLabelServiceClient = googleAdsClient . getLatestVersion (). createCampaignLabelServiceClient ()) { MutateCampaignLabelsResponse response = campaignLabelServiceClient . mutateCampaignLabels ( Long . toString ( customerId ), operations ); System . out . printf ( "Added %d campaign labels:%n" , response . getResultsCount ()); for ( MutateCampaignLabelResult result : response . getResultsList ()) { System . out . println ( result . getResourceName ()); } } } }
C#
// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. using CommandLine ; using Google.Ads.Gax.Examples ; using Google.Ads.GoogleAds.Lib ; using Google.Ads.GoogleAds.V22.Errors ; using Google.Ads.GoogleAds.V22.Resources ; using Google.Ads.GoogleAds.V22.Services ; using System ; using System.Collections.Generic ; using System.Linq ; namespace Google.Ads.GoogleAds.Examples.V22 { /// <summary> /// This code example adds a campaign label to a list of campaigns. /// </summary> public class AddCampaignLabels : ExampleBase { /// <summary> /// Command line options for running the <see cref="AddCampaignLabels"/> example. /// </summary> public class Options : OptionsBase { /// <summary> /// The Google Ads customer ID for which the call is made. /// </summary> [Option("customerId", Required = true, HelpText = "The Google Ads customer ID for which the call is made.")] public long CustomerId { get ; set ; } /// <summary> /// IDs of the campaigns where the campaign labels will be added. /// </summary> [Option("campaignIds", Required = true, HelpText = "IDs of the campaigns where the campaign labels will be added.")] public IEnumerable<long> CampaignIds { get ; set ; } /// <summary> /// The ID of the label to attach to campaigns. /// </summary> [Option("labelId", Required = true, HelpText = "The ID of the label to attach to campaigns.")] public long LabelId { get ; set ; } } /// <summary> /// Main method, to run this code example as a standalone application. /// </summary> /// <param name="args">The command line arguments.</param> public static void Main ( string [] args ) { Options options = ExampleUtilities . ParseCommandLine<Options> ( args ); AddCampaignLabels codeExample = new AddCampaignLabels (); Console . WriteLine ( codeExample . Description ); codeExample . Run ( new GoogleAdsClient (), options . CustomerId , options . CampaignIds . ToArray (), options . LabelId ); } /// <summary> /// Returns a description about the code example. /// </summary> public override string Description = > "This code example adds a campaign label to a list of campaigns." ; /// <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="campaignIds">IDs of the campaigns where the campaign labels will be added. /// </param> /// <param name="labelId">The ID of the label to attach to campaigns.</param> public void Run ( GoogleAdsClient client , long customerId , long [] campaignIds , long labelId ) { // Get the CampaignLabelServiceClient. CampaignLabelServiceClient campaignLabelService = client . GetService ( Services . V22 . CampaignLabelService ); // Gets the resource name of the label to be added across all given campaigns. string labelResourceName = ResourceNames . Label ( customerId , labelId ); List<CampaignLabelOperation> operations = new List<CampaignLabelOperation> (); // Creates a campaign label operation for each campaign. foreach ( long campaignId in campaignIds ) { // Gets the resource name of the given campaign. string campaignResourceName = ResourceNames . Campaign ( customerId , campaignId ); // Creates the campaign label. CampaignLabel campaignLabel = new CampaignLabel () { Campaign = campaignResourceName , Label = labelResourceName }; operations . Add ( new CampaignLabelOperation () { Create = campaignLabel }); } // Send the operation in a mutate request. try { MutateCampaignLabelsResponse response = campaignLabelService . MutateCampaignLabels ( customerId . ToString (), operations ); Console . WriteLine ( $"Added {response.Results} campaign labels:" ); foreach ( MutateCampaignLabelResult result in response . Results ) { Console . WriteLine ( 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 ; } } } }
PHP
< ?php /** * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Google\Ads\GoogleAds\Examples\CampaignManagement; require __DIR__ . '/../../vendor/autoload.php'; use GetOpt\GetOpt; use Google\Ads\GoogleAds\Examples\Utils\ArgumentNames; use Google\Ads\GoogleAds\Examples\Utils\ArgumentParser; use Google\Ads\GoogleAds\Lib\OAuth2TokenBuilder; use Google\Ads\GoogleAds\Lib\V22\GoogleAdsClient; use Google\Ads\GoogleAds\Lib\V22\GoogleAdsClientBuilder; use Google\Ads\GoogleAds\Lib\V22\GoogleAdsException; use Google\Ads\GoogleAds\Util\V22\ResourceNames; use Google\Ads\GoogleAds\V22\Errors\GoogleAdsError; use Google\Ads\GoogleAds\V22\Resources\CampaignLabel; use Google\Ads\GoogleAds\V22\Services\CampaignLabelOperation; use Google\Ads\GoogleAds\V22\Services\MutateCampaignLabelsRequest; use Google\ApiCore\ApiException; /** This example adds a campaign label to a list of campaigns. */ class AddCampaignLabels { private const CUSTOMER_ID = 'INSERT_CUSTOMER_ID_HERE'; private const CAMPAIGN_ID_1 = 'INSERT_CAMPAIGN_ID_1_HERE'; private const CAMPAIGN_ID_2 = 'INSERT_CAMPAIGN_ID_2_HERE'; private const LABEL_ID = 'INSERT_LABEL_ID_HERE'; public static function main() { // Either pass the required parameters for this example on the command line, or insert them // into the constants above. $options = (new ArgumentParser())->parseCommandArguments([ ArgumentNames::CUSTOMER_ID => GetOpt::REQUIRED_ARGUMENT, ArgumentNames::CAMPAIGN_IDS => GetOpt::MULTIPLE_ARGUMENT, ArgumentNames::LABEL_ID => GetOpt::REQUIRED_ARGUMENT ]); // Generate a refreshable OAuth2 credential for authentication. $oAuth2Credential = (new OAuth2TokenBuilder())->fromFile()->build(); // Construct a Google Ads client configured from a properties file and the // OAuth2 credentials above. $googleAdsClient = (new GoogleAdsClientBuilder()) ->fromFile() ->withOAuth2Credential($oAuth2Credential) ->build(); try { self::runExample( $googleAdsClient, $options[ArgumentNames::CUSTOMER_ID] ?: self::CUSTOMER_ID, $options[ArgumentNames::CAMPAIGN_IDS] ?: [self::CAMPAIGN_ID_1, self::CAMPAIGN_ID_2], $options[ArgumentNames::LABEL_ID] ?: self::LABEL_ID ); } catch (GoogleAdsException $googleAdsException) { printf( "Request with ID '%s' has failed.%sGoogle Ads failure details:%s", $googleAdsException->getRequestId(), PHP_EOL, PHP_EOL ); foreach ($googleAdsException->getGoogleAdsFailure()->getErrors() as $error) { /** @var GoogleAdsError $error */ printf( "\t%s: %s%s", $error->getErrorCode()->getErrorCode(), $error->getMessage(), PHP_EOL ); } exit(1); } catch (ApiException $apiException) { printf( "ApiException was thrown with message '%s'.%s", $apiException->getMessage(), PHP_EOL ); exit(1); } } /** * Runs the example. * * @param GoogleAdsClient $googleAdsClient the Google Ads API client * @param int $customerId the customer ID * @param array $campaignIds the IDs of the campaigns to which the label will be added * @param int $labelId the ID of the label to attach to campaigns */ public static function runExample( GoogleAdsClient $googleAdsClient, int $customerId, array $campaignIds, int $labelId ) { // Gets the resource name of the label to be added across all given campaigns. $labelResourceName = ResourceNames::forLabel($customerId, $labelId); // Creates a campaign label operation for each campaign. $operations = []; foreach ($campaignIds as $campaignId) { // Creates the campaign label. $campaignLabel = new CampaignLabel([ 'campaign' => ResourceNames::forCampaign($customerId, $campaignId), 'label' => $labelResourceName ]); $campaignLabelOperation = new CampaignLabelOperation(); $campaignLabelOperation->setCreate($campaignLabel); $operations[] = $campaignLabelOperation; } // Issues a mutate request to add the labels to the campaigns. $campaignLabelServiceClient = $googleAdsClient->getCampaignLabelServiceClient(); $response = $campaignLabelServiceClient->mutateCampaignLabels( MutateCampaignLabelsRequest::build($customerId, $operations) ); printf("Added %d campaign labels:%s", $response->getResults()->count(), PHP_EOL); foreach ($response->getResults() as $addedCampaignLabel) { /** @var CampaignLabel $addedCampaignLabel */ printf( "New campaign label added with resource name: '%s'.%s", $addedCampaignLabel->getResourceName(), PHP_EOL ); } } } AddCampaignLabels::main();
Python
#!/usr/bin/env python # Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """This code example adds a campaign label to a list of campaigns. This example assumes that a label has already been prepared. """ import argparse import sys from typing import List , Any from google.ads.googleads.client import GoogleAdsClient from google.ads.googleads.errors import GoogleAdsException from google.ads.googleads.v22.services.services.campaign_label_service import ( CampaignLabelServiceClient , ) from google.ads.googleads.v22.services.services.campaign_service import ( CampaignServiceClient , ) from google.ads.googleads.v22.services.services.label_service import ( LabelServiceClient , ) from google.ads.googleads.v22.services.types.campaign_label_service import ( MutateCampaignLabelsResponse , ) from google.ads.googleads.v22.resources.types.campaign_label import ( CampaignLabel , ) def main ( client : GoogleAdsClient , customer_id : str , label_id : str , campaign_ids : List [ str ], ) - > None : """This code example adds a campaign label to a list of campaigns. Args: client: An initialized GoogleAdsClient instance. customer_id: A client customer ID str. label_id: The ID of the label to attach to campaigns. campaign_ids: A list of campaign IDs to which the label will be added. """ # Get an instance of CampaignLabelService client. campaign_label_service : CampaignLabelServiceClient = client . get_service ( "CampaignLabelService" ) campaign_service : CampaignServiceClient = client . get_service ( "CampaignService" ) label_service : LabelServiceClient = client . get_service ( "LabelService" ) # Build the resource name of the label to be added across the campaigns. label_resource_name : str = label_service . label_path ( customer_id , label_id ) operations : List [ Any ] = [] for campaign_id in campaign_ids : campaign_resource_name : str = campaign_service . campaign_path ( customer_id , campaign_id ) campaign_label_operation : Any = client . get_type ( "CampaignLabelOperation" ) campaign_label : CampaignLabel = campaign_label_operation . create campaign_label . campaign = campaign_resource_name campaign_label . label = label_resource_name operations . append ( campaign_label_operation ) response : MutateCampaignLabelsResponse = ( campaign_label_service . mutate_campaign_labels ( customer_id = customer_id , operations = operations ) ) print ( f "Added { len ( response . results ) } campaign labels:" ) for result in response . results : print ( result . resource_name ) if __name__ == "__main__" : parser = argparse . ArgumentParser ( description = "This code example adds a campaign label to a list of " "campaigns." ) # The following argument(s) should be provided to run the example. parser . add_argument ( "-c" , "--customer_id" , type = str , required = True , help = "The Google Ads customer ID." , ) parser . add_argument ( "-l" , "--label_id" , type = str , required = True , help = "The ID of the label to attach to campaigns." , ) parser . add_argument ( "-i" , "--campaign_ids" , nargs = "+" , type = str , required = True , help = "The campaign IDs to receive the label." , ) args : argparse . Namespace = parser . parse_args () # GoogleAdsClient will read the google-ads.yaml configuration file in the # home directory if none is specified. googleads_client : GoogleAdsClient = GoogleAdsClient . load_from_storage ( version = "v22" ) try : main ( googleads_client , args . customer_id , args . label_id , args . campaign_ids ) except GoogleAdsException as ex : print ( f 'Request with ID " { ex . request_id } " failed with status ' f '" { ex . error . code () . name } " and includes the following errors:' ) for error in ex . failure . errors : print ( f ' \t Error with message " { error . message } ".' ) if error . location : for field_path_element in error . location . field_path_elements : print ( f " \t\t On field: { field_path_element . field_name } " ) sys . exit ( 1 )
Ruby
#!/usr/bin/env ruby # Encoding: utf-8 # # Copyright 2018 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # This code example adds a campaign label to a list of campaigns require 'optparse' require 'google/ads/google_ads' require_relative '../shared/error_handler.rb' def add_campaign_label ( customer_id , label_id , campaign_ids ) # GoogleAdsClient will read a config file from # ENV['HOME']/google_ads_config.rb when called without parameters client = Google :: Ads :: GoogleAds :: GoogleAdsClient . new label_resource_name = client . path . label ( customer_id , label_id ) labels = campaign_ids . map { | campaign_id | client . resource . campaign_label do | label | campaign_resource_name = client . path . campaign ( customer_id , campaign_id ) label . campaign = campaign_resource_name label . label = label_resource_name end } ops = labels . map { | label | client . operation . create_resource . campaign_label ( label ) } response = client . service . campaign_label . mutate_campaign_labels ( customer_id : customer_id , operations : ops , ) response . results . each do | result | puts ( "Created campaign label with id: #{ result . resource_name } " ) end end if __FILE__ == $0 options = {} # The following parameter(s) should be provided to run the example. You can # either specify these by changing the INSERT_XXX_ID_HERE values below, or on # the command line. # # Parameters passed on the command line will override any parameters set in # code. # # Running the example with -h will print the command line usage. options [ :customer_id ] = 'INSERT_CUSTOMER_ID_HERE' options [ :label_id ] = 'INSERT_LABEL_ID_HERE' options [ :campaign_ids ] = 'INSERT_CAMPAIGN_IDS_HERE' OptionParser . new do | opts | opts . banner = sprintf ( "Usage: #{ File . basename ( __FILE__ ) } .rb [options]" ) opts . separator '' opts . separator 'Options:' opts . on ( '-C' , '--customer-id CUSTOMER-ID' , String , 'Customer ID' ) do | v | options [ :customer_id ] = v end opts . on ( '-c' , '--campaign-ids CAMPAIGN-IDS' , String , 'Comma separated list of campaign ids' ) do | v | options [ :campaign_ids ] = v end opts . on ( '-L' , '--label-id LABEL-ID' , String , 'Label ID' ) do | v | options [ :label_id ] = v end opts . separator '' opts . separator 'Help:' opts . on_tail ( '-h' , '--help' , 'Show this message' ) do puts opts exit end end . parse! begin add_campaign_label ( options . fetch ( :customer_id ) . tr ( "-" , "" ), options . fetch ( :label_id ), options . fetch ( :campaign_ids ) . split ( "," ) . map ( & :strip ), ) rescue Google :: Ads :: GoogleAds :: Errors :: GoogleAdsError = > e GoogleAdsErrorHandler . handle_google_ads_error ( e ) raise # Re-raise the error to maintain original script behavior. end end
Perl
#!/usr/bin/perl -w # # Copyright 2019, Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # This example adds a campaign label to a list of campaigns. use strict ; use warnings ; use utf8 ; use FindBin qw($Bin) ; use lib "$Bin/../../lib" ; use Google::Ads::GoogleAds::Client ; use Google::Ads::GoogleAds::Utils::GoogleAdsHelper ; use Google::Ads::GoogleAds::V22::Resources::CampaignLabel ; use Google::Ads::GoogleAds::V22::Services::CampaignLabelService::CampaignLabelOperation ; use Google::Ads::GoogleAds::V22::Utils::ResourceNames ; use Getopt::Long qw(:config auto_help) ; use Pod::Usage ; use Cwd qw(abs_path) ; # The following parameter(s) should be provided to run the example. You can # either specify these by changing the INSERT_XXX_ID_HERE values below, or on # the command line. # # Parameters passed on the command line will override any parameters set in # code. # # Running the example with -h will print the command line usage. my $customer_id = "INSERT_CUSTOMER_ID_HERE" ; my $campaign_id1 = "INSERT_CAMPAIGN_ID_1_HERE" ; my $campaign_id2 = "INSERT_CAMPAIGN_ID_2_HERE" ; my $campaign_ids = [] ; my $label_id = "INSERT_LABEL_ID_HERE" ; sub add_campaign_labels { my ( $api_client , $customer_id , $campaign_ids , $label_id ) = @_ ; my $label_resource_name = Google::Ads::GoogleAds::V22::Utils::ResourceNames:: label ( $customer_id , $label_id ); my $campaign_label_operations = [] ; # Create a campaign label operation for each campaign. foreach my $campaign_id ( @$campaign_ids ) { # Create a campaign label. my $campaign_label = Google::Ads::GoogleAds::V22::Resources:: CampaignLabel - > new ({ campaign = > Google::Ads::GoogleAds::V22::Utils::ResourceNames:: campaign ( $customer_id , $campaign_id ), label = > $label_resource_name }); # Create a campaign label operation. my $campaign_label_operation = Google::Ads::GoogleAds::V22::Services::CampaignLabelService:: CampaignLabelOperation - > new ({ create = > $campaign_label }); push @$campaign_label_operations , $campaign_label_operation ; } # Add the campaign labels to the campaigns. my $campaign_labels_response = $api_client - > CampaignLabelService () - > mutate ({ customerId = > $customer_id , operations = > $campaign_label_operations }); my $campaign_label_results = $campaign_labels_response - > { results }; printf "Added %d campaign labels:\n" , scalar @$campaign_label_results ; foreach my $campaign_label_result ( @$campaign_label_results ) { printf "Created campaign label '%s'.\n" , $campaign_label_result - > { resourceName }; } return 1 ; } # Don't run the example if the file is being included. if ( abs_path ( $0 ) ne abs_path ( __FILE__ )) { return 1 ; } # Get Google Ads Client, credentials will be read from ~/googleads.properties. my $api_client = Google::Ads::GoogleAds:: Client - > new (); # By default examples are set to die on any server returned fault. $api_client - > set_die_on_faults ( 1 ); # Parameters passed on the command line will override any parameters set in code. GetOptions ( "customer_id=s" = > \ $customer_id , "campaign_ids=s" = > \ @$campaign_ids , "label_id=i" = > \ $label_id ); $campaign_ids = [ $campaign_id1 , $campaign_id2 ] unless @$campaign_ids ; # Print the help message if the parameters are not initialized in the code nor # in the command line. pod2usage ( 2 ) if not check_params ( $customer_id , $campaign_ids , $label_id ); # Call the example. add_campaign_labels ( $api_client , $customer_id =~ s/-//g r , $campaign_ids , $label_id ); =pod =head1 NAME add_campaign_labels =head1 DESCRIPTION This example adds a campaign label to a list of campaigns. =head1 SYNOPSIS add_campaign_labels.pl [options] -help Show the help message. -customer_id The Google Ads customer ID. -campaign_ids The campaign IDs to which the label will be added. -label_id The label ID. =cut

