AI-generated Key Takeaways
-
The code demonstrates how to add ad group bid modifiers to a hotel ad group using the Google Ads API.
-
Bid modifiers are created based on hotel check-in day (specifically Monday with a 150% increase) and hotel length of stay (3 to 7 nights with a 170% increase).
-
The example shows how to construct the necessary objects, set their properties, and issue a mutate request to apply the bid modifiers.
-
After successfully adding the bid modifiers, the code prints the resource names of the newly created bid modifiers.
Java
// 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. package com.google.ads.googleads.examples.travel ; 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.common.HotelCheckInDayInfo ; import com.google.ads.googleads.v22.common.HotelLengthOfStayInfo ; import com.google.ads.googleads.v22.enums.DayOfWeekEnum.DayOfWeek ; import com.google.ads.googleads.v22.errors.GoogleAdsError ; import com.google.ads.googleads.v22.errors.GoogleAdsException ; import com.google.ads.googleads.v22.resources.AdGroupBidModifier ; import com.google.ads.googleads.v22.services.AdGroupBidModifierOperation ; import com.google.ads.googleads.v22.services.AdGroupBidModifierServiceClient ; import com.google.ads.googleads.v22.services.MutateAdGroupBidModifierResult ; import com.google.ads.googleads.v22.services.MutateAdGroupBidModifiersResponse ; import com.google.ads.googleads.v22.utils.ResourceNames ; import java.io.FileNotFoundException ; import java.io.IOException ; import java.util.ArrayList ; import java.util.List ; /** * Adds ad group bid modifiers to a hotel ad group based on hotel check-in day and hotel length of * stay. */ public class AddHotelAdGroupBidModifiers { private static class AddHotelAdGroupBidModifiersParams extends CodeSampleParams { @Parameter ( names = ArgumentNames . CUSTOMER_ID , required = true ) private Long customerId ; @Parameter ( names = ArgumentNames . AD_GROUP_ID , required = true ) private Long adGroupId ; } public static void main ( String [] args ) { AddHotelAdGroupBidModifiersParams params = new AddHotelAdGroupBidModifiersParams (); 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 . adGroupId = Long . parseLong ( "INSERT_AD_GROUP_ID_HERE" ); // Optional: To use a different check-in day criterion ID from the default (Monday), uncomment // the line below and insert the desired criterion ID. // params.criterionId = Long.parseLong("INSERT_HOTEL_CHECK_IN_DAY_CRITERION_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 AddHotelAdGroupBidModifiers () . runExample ( googleAdsClient , params . customerId , params . adGroupId ); } 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 adGroupId the ID of the ad group. * @throws GoogleAdsException if an API request failed with one or more service errors. */ private void runExample ( GoogleAdsClient googleAdsClient , long customerId , long adGroupId ) { List<AdGroupBidModifierOperation> operations = new ArrayList <> (); // Constructs the ad group resource name to use for each bid modifier. String adGroupResourceName = ResourceNames . adGroup ( customerId , adGroupId ); // 1) Creates an ad group bid modifier based on the hotel check-in day. AdGroupBidModifier checkInDayAdGroupBidModifier = AdGroupBidModifier . newBuilder () // Sets the resource name to the ad group resource name joined with the criterion ID // whose value corresponds to the desired check-in day. . setAdGroup ( adGroupResourceName ) . setHotelCheckInDay ( HotelCheckInDayInfo . newBuilder (). setDayOfWeek ( DayOfWeek . MONDAY )) // Sets the bid modifier value to 150%. . setBidModifier ( 1.5d ) . build (); operations . add ( AdGroupBidModifierOperation . newBuilder (). setCreate ( checkInDayAdGroupBidModifier ). build ()); // 2) Creates an ad group bid modifier based on the hotel length of stay. AdGroupBidModifier lengthOfStayAdGroupBidModifier = AdGroupBidModifier . newBuilder () // Sets the ad group. . setAdGroup ( adGroupResourceName ) // Creates the hotel length of stay info. . setHotelLengthOfStay ( HotelLengthOfStayInfo . newBuilder (). setMinNights ( 3L ). setMaxNights ( 7L ). build ()) // Sets the bid modifier value to 170%. . setBidModifier ( 1.7d ) . build (); operations . add ( AdGroupBidModifierOperation . newBuilder (). setCreate ( lengthOfStayAdGroupBidModifier ). build ()); // Issues a mutate request to add the ad group bid modifiers. try ( AdGroupBidModifierServiceClient adGroupBidModifierServiceClient = googleAdsClient . getLatestVersion (). createAdGroupBidModifierServiceClient ()) { MutateAdGroupBidModifiersResponse response = adGroupBidModifierServiceClient . mutateAdGroupBidModifiers ( Long . toString ( customerId ), operations ); // Prints the resource names of the added ad group bid modifiers. System . out . printf ( "Added %d hotel ad group bid modifiers:%n" , response . getResultsCount ()); for ( MutateAdGroupBidModifierResult mutateAdGroupBidModifierResult : response . getResultsList ()) { System . out . printf ( " %s%n" , mutateAdGroupBidModifierResult . getResourceName ()); } } } }
C#
// 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. using CommandLine ; using Google.Ads.Gax.Examples ; using Google.Ads.GoogleAds.Lib ; using Google.Ads.GoogleAds.V22.Common ; 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 DayOfWeek = Google . Ads . GoogleAds . V22 . Enums . DayOfWeekEnum . Types . DayOfWeek ; namespace Google.Ads.GoogleAds.Examples.V22 { /// <summary> /// This code example shows how to add ad group bid modifiers to a hotel ad group based on /// hotel check-in day and hotel length of stay. /// </summary> public class AddHotelAdGroupBidModifiers : ExampleBase { /// <summary> /// Command line options for running the <see cref="AddHotelAdGroupBidModifiers"/> 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> /// The ad group to which bid modifiers are set. /// </summary> [Option("adGroupId", Required = true, HelpText = "The ad group to which bid modifiers are set.")] public long AdGroupId { 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 ); AddHotelAdGroupBidModifiers codeExample = new AddHotelAdGroupBidModifiers (); Console . WriteLine ( codeExample . Description ); codeExample . Run ( new GoogleAdsClient (), options . CustomerId , options . AdGroupId ); } /// <summary> /// Returns a description about the code example. /// </summary> public override string Description = > "This code example shows how to add ad group bid modifiers to a hotel ad group based " + "on hotel check-in day and hotel length of stay." ; /// <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="adGroupId">The ad group to which bid modifiers are set.</param> public void Run ( GoogleAdsClient client , long customerId , long adGroupId ) { // Get the AdGroupBidModifierService. AdGroupBidModifierServiceClient service = client . GetService ( Services . V22 . AdGroupBidModifierService ); // Constructs the ad group resource name to use for each bid modifier. string adGroupResourceName = ResourceNames . AdGroup ( customerId , adGroupId ); // 1) Create an ad group bid modifier based on the hotel check-in day. AdGroupBidModifier checkInDayAdGroupBidModifier = new AdGroupBidModifier () { // Sets the resource name to the ad group resource name joined with the criterion // ID whose value corresponds to the desired check-in day. AdGroup = adGroupResourceName , HotelCheckInDay = new HotelCheckInDayInfo () { DayOfWeek = DayOfWeek . Monday }, // Set the bid modifier value to 150%. BidModifier = 1.5 , }; // Creates an ad group bid modifier operation. var checkInDayAdGroupBidModifierOperation = new AdGroupBidModifierOperation () { Create = checkInDayAdGroupBidModifier }; // 2) Create an ad group bid modifier based on the hotel length of stay. AdGroupBidModifier lengthOfStayAdGroupBidModifier = new AdGroupBidModifier () { // Set the ad group. AdGroup = ResourceNames . AdGroup ( customerId , adGroupId ), // Set the hotel length of stay info. HotelLengthOfStay = new HotelLengthOfStayInfo () { MinNights = 3 , MaxNights = 7 }, // Set the bid modifier value to 170%. BidModifier = 1.7 }; // Create an ad group bid modifier operation. var lengthOfStayAdGroupBidModifierOperation = new AdGroupBidModifierOperation () { Create = lengthOfStayAdGroupBidModifier }; try { // Issue a mutate request to add an ad group bid modifiers. MutateAdGroupBidModifiersResponse response = service . MutateAdGroupBidModifiers ( customerId . ToString (), new AdGroupBidModifierOperation [] { checkInDayAdGroupBidModifierOperation , lengthOfStayAdGroupBidModifierOperation } ); // Display the resource names of the added ad group bid modifiers. Console . WriteLine ( $"Added {response.Results.Count} hotel ad group bid modifiers:" ); foreach ( MutateAdGroupBidModifierResult 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 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. */ namespace Google\Ads\GoogleAds\Examples\Travel; 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\V22\GoogleAdsClient; use Google\Ads\GoogleAds\Lib\V22\GoogleAdsClientBuilder; use Google\Ads\GoogleAds\Lib\V22\GoogleAdsException; use Google\Ads\GoogleAds\Lib\OAuth2TokenBuilder; use Google\Ads\GoogleAds\Util\V22\ResourceNames; use Google\Ads\GoogleAds\V22\Common\HotelCheckInDayInfo; use Google\Ads\GoogleAds\V22\Common\HotelLengthOfStayInfo; use Google\Ads\GoogleAds\V22\Enums\DayOfWeekEnum\DayOfWeek; use Google\Ads\GoogleAds\V22\Errors\GoogleAdsError; use Google\Ads\GoogleAds\V22\Resources\AdGroupBidModifier; use Google\Ads\GoogleAds\V22\Services\AdGroupBidModifierOperation; use Google\Ads\GoogleAds\V22\Services\MutateAdGroupBidModifiersRequest; use Google\ApiCore\ApiException; /** * This example shows how to add ad group bid modifiers to a hotel ad group based on hotel check-in * day and hotel length of stay. */ class AddHotelAdGroupBidModifiers { private const CUSTOMER_ID = 'INSERT_CUSTOMER_ID_HERE'; private const AD_GROUP_ID = 'INSERT_AD_GROUP_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::AD_GROUP_ID => GetOpt::REQUIRED_ARGUMENT, ArgumentNames::CHECK_IN_DAY_CRITERION_ID => GetOpt::OPTIONAL_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::AD_GROUP_ID] ?: self::AD_GROUP_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 int $adGroupId the ad group ID */ public static function runExample( GoogleAdsClient $googleAdsClient, int $customerId, int $adGroupId ) { $operations = []; // 1) Creates an ad group bid modifier based on the hotel check-in day. $checkInDayAdGroupBidModifier = new AdGroupBidModifier([ // Sets the ad group. 'ad_group' => ResourceNames::forAdGroup($customerId, $adGroupId), 'hotel_check_in_day' => new HotelCheckInDayInfo([ 'day_of_week' => DayOfWeek::MONDAY ]), // Sets the bid modifier value to 150%. 'bid_modifier' => 1.5 ]); // Creates an ad group bid modifier operation. $checkInDayAdGroupBidModifierOperation = new AdGroupBidModifierOperation(); $checkInDayAdGroupBidModifierOperation->setCreate($checkInDayAdGroupBidModifier); $operations[] = $checkInDayAdGroupBidModifierOperation; // 2) Creates an ad group bid modifier based on the hotel length of stay. $lengthOfStayAdGroupBidModifier = new AdGroupBidModifier([ // Sets the ad group. 'ad_group' => ResourceNames::forAdGroup($customerId, $adGroupId), // Creates the hotel length of stay info. 'hotel_length_of_stay' => new HotelLengthOfStayInfo([ 'min_nights' => 3, 'max_nights' => 7, ]), // Sets the bid modifier value to 170%. 'bid_modifier' => 1.7 ]); // Creates an ad group bid modifier operation. $lengthOfStayAdGroupBidModifierOperation = new AdGroupBidModifierOperation(); $lengthOfStayAdGroupBidModifierOperation->setCreate( $lengthOfStayAdGroupBidModifier ); $operations[] = $lengthOfStayAdGroupBidModifierOperation; // Issues a mutate request to add an ad group bid modifiers. $adGroupBidModifierServiceClient = $googleAdsClient->getAdGroupBidModifierServiceClient(); $response = $adGroupBidModifierServiceClient->mutateAdGroupBidModifiers( MutateAdGroupBidModifiersRequest::build($customerId, $operations) ); // Print out resource names of the added ad group bid modifiers. printf( "Added %d hotel ad group bid modifiers:%s", $response->getResults()->count(), PHP_EOL ); foreach ($response->getResults() as $addedAdGroupBidModifier) { /** @var AdGroupBidModifier $addedAdGroupBidModifier */ print $addedAdGroupBidModifier->getResourceName() . PHP_EOL; } } } AddHotelAdGroupBidModifiers::main();
Python
#!/usr/bin/env python # 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 example adds an ad group bid modifier to a hotel ad group. The bid modifiers will be based on hotel check-in day and length of stay. """ import argparse import sys from google.ads.googleads.client import GoogleAdsClient from google.ads.googleads.errors import GoogleAdsException from google.ads.googleads.v22.common.types.criteria import HotelLengthOfStayInfo from google.ads.googleads.v22.resources.types.ad_group_bid_modifier import ( AdGroupBidModifier , ) from google.ads.googleads.v22.services.services.ad_group_bid_modifier_service import ( AdGroupBidModifierServiceClient , ) from google.ads.googleads.v22.services.services.ad_group_service import ( AdGroupServiceClient , ) from google.ads.googleads.v22.services.types.ad_group_bid_modifier_service import ( AdGroupBidModifierOperation , MutateAdGroupBidModifierResult , MutateAdGroupBidModifiersResponse , ) def main ( client : GoogleAdsClient , customer_id : str , ad_group_id : str ) - > None : ad_group_service : AdGroupServiceClient = client . get_service ( "AdGroupService" ) ag_bm_service : AdGroupBidModifierServiceClient = client . get_service ( "AdGroupBidModifierService" ) # Create ad group bid modifier based on hotel check-in day. check_in_ag_bm_operation : AdGroupBidModifierOperation = client . get_type ( "AdGroupBidModifierOperation" ) check_in_ag_bid_modifier : AdGroupBidModifier = ( check_in_ag_bm_operation . create ) check_in_ag_bid_modifier . hotel_check_in_day . day_of_week = ( client . enums . DayOfWeekEnum . MONDAY ) check_in_ag_bid_modifier . ad_group = ad_group_service . ad_group_path ( customer_id , ad_group_id ) # Sets the bid modifier value to 150%. check_in_ag_bid_modifier . bid_modifier = 1.5 # Create ad group bid modifier based on hotel length of stay info. los_ag_bm_operation : AdGroupBidModifierOperation = client . get_type ( "AdGroupBidModifierOperation" ) los_ag_bid_modifier : AdGroupBidModifier = los_ag_bm_operation . create los_ag_bid_modifier . ad_group = ad_group_service . ad_group_path ( customer_id , ad_group_id ) # Creates the hotel length of stay info. hotel_length_of_stay_info : HotelLengthOfStayInfo = ( los_ag_bid_modifier . hotel_length_of_stay ) hotel_length_of_stay_info . min_nights = 3 hotel_length_of_stay_info . max_nights = 7 # Sets the bid modifier value to 170%. los_ag_bid_modifier . bid_modifier = 1.7 # Add the bid modifiers ag_bm_response : MutateAdGroupBidModifiersResponse = ( ag_bm_service . mutate_ad_group_bid_modifiers ( customer_id = customer_id , operations = [ check_in_ag_bm_operation , los_ag_bm_operation ], ) ) # Print out resource names of the added ad group bid modifiers. print ( f "Added { len ( ag_bm_response . results ) } hotel ad group bid modifiers:" ) result : MutateAdGroupBidModifierResult for result in ag_bm_response . results : print ( result . resource_name ) if __name__ == "__main__" : parser : argparse . ArgumentParser = argparse . ArgumentParser ( description = ( "Adds an ad group bid modifier to a hotel ad group." ) ) # 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 ( "-a" , "--ad_group_id" , type = str , required = True , help = "The ad group ID of the hotel ad group." , ) 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 . ad_group_id ) 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 example shows how to add ad group bid modifiers to a hotel ad group # based on hotel check-in day and hotel length of stay. require 'optparse' require 'google/ads/google_ads' require 'date' def add_hotel_ad_group_bid_modifiers ( customer_id , ad_group_id ) # GoogleAdsClient will read a config file from # ENV['HOME']/google_ads_config.rb when called without parameters client = Google :: Ads :: GoogleAds :: GoogleAdsClient . new operations = [] ad_group_resource = client . path . ad_group ( customer_id , ad_group_id ) # 1) Creates an ad group bid modifier based on the hotel check-in day. operations << client . operation . create_resource . ad_group_bid_modifier do | bm | # Sets the ad group. bm . ad_group = ad_group_resource # Sets the check-in day to Monday. bm . hotel_check_in_day = client . resource . hotel_check_in_day_info do | info | info . day_of_week = :MONDAY end # Sets the bid modifier value to 150%. bm . bid_modifier = 1 . 5 end # 2) Creates an ad group bid modifier based on the hotel length of stay. operations << client . operation . create_resource . ad_group_bid_modifier do | bm | # Sets the ad group. bm . ad_group = ad_group_resource # Creates the hotel length of stay info. bm . hotel_length_of_stay = client . resource . hotel_length_of_stay_info do | info | info . min_nights = 3 info . max_nights = 7 end # Sets the bid modifier value to 170%. bm . bid_modifier = 1 . 7 end # 3) Issues a mutate request to add an ad group bid modifiers. ad_group_bid_modifier_service = client . service . ad_group_bid_modifier response = ad_group_bid_modifier_service . mutate_ad_group_bid_modifiers ( customer_id : customer_id , operations : operations , ) # Print out resource names of the added ad group bid modifiers. puts "Added #{ response . results . size } hotel ad group bid modifiers:" response . results . each do | added_ad_group_bid_modifier | puts " \t #{ added_ad_group_bid_modifier . 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 [ :ad_group_id ] = 'INSERT_AD_GROUP_ID_HERE' OptionParser . new do | opts | opts . banner = sprintf ( 'Usage: %s [options]' , File . basename ( __FILE__ )) opts . separator '' opts . separator 'Options:' opts . on ( '-C' , '--customer-id CUSTOMER-ID' , String , 'Customer ID' ) do | v | options [ :customer_id ] = v end opts . on ( '-A' , '--ad-group-id AD-GROUP-ID' , Integer , 'AdGroup ID' ) do | v | options [ :ad_group_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_hotel_ad_group_bid_modifiers ( options . fetch ( :customer_id ) . tr ( "-" , "" ), options [ :ad_group_id ] ) rescue Google :: Ads :: GoogleAds :: Errors :: GoogleAdsError = > e e . failure . errors . each do | error | STDERR . printf ( "Error with message: %s \n " , error . message ) if error . location error . location . field_path_elements . each do | field_path_element | STDERR . printf ( " \t On field: %s \n " , field_path_element . field_name ) end end error . error_code . to_h . each do | k , v | next if v == :UNSPECIFIED STDERR . printf ( " \t Type: %s \n\t Code: %s \n " , k , v ) end end raise 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 shows how to add ad group bid modifiers to a hotel ad group based # on hotel check-in day and hotel length of stay. 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::AdGroupBidModifier ; use Google::Ads::GoogleAds::V22::Common::HotelCheckInDayInfo ; use Google::Ads::GoogleAds::V22::Common::HotelLengthOfStayInfo ; use Google::Ads::GoogleAds::V22::Enums::DayOfWeekEnum qw(MONDAY) ; use Google::Ads::GoogleAds::V22::Services::AdGroupBidModifierService::AdGroupBidModifierOperation ; 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 $ad_group_id = "INSERT_AD_GROUP_ID_HERE" ; sub add_hotel_ad_group_bid_modifiers { my ( $api_client , $customer_id , $ad_group_id ) = @_ ; # 1) Create an ad group bid modifier based on the hotel check-in day. my $check_in_day_ad_group_bid_modifier = Google::Ads::GoogleAds::V22::Resources:: AdGroupBidModifier - > new ({ # Set the ad group. adGroup = > Google::Ads::GoogleAds::V22::Utils::ResourceNames:: ad_group ( $customer_id , $ad_group_id ), hotelCheckInDay = > Google::Ads::GoogleAds::V22::Common:: HotelCheckInDayInfo - > new ({ dayOfWeek = > MONDAY } ), # Set the bid modifier value to 150%. bidModifier = > 1.5 }); # Create an ad group bid modifier operation. my $check_in_day_ad_group_bid_modifier_operation = Google::Ads::GoogleAds::V22::Services::AdGroupBidModifierService:: AdGroupBidModifierOperation - > new ({ create = > $check_in_day_ad_group_bid_modifier }); # 2) Create an ad group bid modifier based on the hotel length of stay. my $length_of_stay_ad_group_bid_modifier = Google::Ads::GoogleAds::V22::Resources:: AdGroupBidModifier - > new ({ # Set the ad group. adGroup = > Google::Ads::GoogleAds::V22::Utils::ResourceNames:: ad_group ( $customer_id , $ad_group_id ), # Create the hotel length of stay info. hotelLengthOfStay = > Google::Ads::GoogleAds::V22::Common:: HotelLengthOfStayInfo - > new ({ minNights = > 3 , maxNights = > 7 } ), # Set the bid modifier value to 170%. bidModifier = > 1.7 }); # Create an ad group bid modifier operation. my $length_of_stay_ad_group_bid_modifier_operation = Google::Ads::GoogleAds::V22::Services::AdGroupBidModifierService:: AdGroupBidModifierOperation - > new ({ create = > $length_of_stay_ad_group_bid_modifier }); # 3) Add the ad group bid modifiers. my $ad_group_bid_modifiers_response = $api_client - > AdGroupBidModifierService () - > mutate ({ customerId = > $customer_id , operations = > [ $check_in_day_ad_group_bid_modifier_operation , $length_of_stay_ad_group_bid_modifier_operation ]}); # Print out resource names of the added ad group bid modifiers. my $ad_group_bid_modifier_results = $ad_group_bid_modifiers_response - > { results }; printf "Added %d hotel ad group bid modifiers:\n" , scalar @$ad_group_bid_modifier_results ; foreach my $ad_group_bid_modifier_result ( @$ad_group_bid_modifier_results ) { printf "\t%s\n" , $ad_group_bid_modifier_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 , "ad_group_id=i" = > \ $ad_group_id ); # 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 , $ad_group_id ); # Call the example. add_hotel_ad_group_bid_modifiers ( $api_client , $customer_id =~ s/-//g r , $ad_group_id ); =pod =head1 NAME add_hotel_ad_group_bid_modifiers =head1 DESCRIPTION This example shows how to add ad group bid modifiers to a hotel ad group based on hotel check-in day and hotel length of stay. =head1 SYNOPSIS add_hotel_ad_group_bid_modifiers.pl [options] -help Show the help message. -customer_id The Google Ads customer ID. -ad_group_id The hotel ad group ID. =cut

