Creating a Hotel ad involves two steps:
Creating an
Ad
and setting itshotel_ad
to an instance ofHotelAdInfo
.Creating an
AdGroupAd
and associating the previously createdAd
to it.
Java
private String addHotelAdGroupAd( GoogleAdsClient googleAdsClient, long customerId, String adGroupResourceName) { // Creates a new hotel ad. Ad ad = Ad.newBuilder().setHotelAd(HotelAdInfo.newBuilder().build()).build(); // Creates a new ad group ad and sets the hotel ad to it. AdGroupAd adGroupAd = AdGroupAd.newBuilder() // Sets the ad to the ad created above. .setAd(ad) // Set the ad group ad to enabled. Setting this to paused will cause an error // for hotel campaigns. For hotels pausing should happen at either the ad group or // campaign level. .setStatus(AdGroupAdStatus.ENABLED) // Sets the ad group. .setAdGroup(adGroupResourceName) .build(); // Creates an ad group ad operation. AdGroupAdOperation operation = AdGroupAdOperation.newBuilder().setCreate(adGroupAd).build(); // Issues a mutate request to add an ad group ad. try (AdGroupAdServiceClient adGroupAdServiceClient = googleAdsClient.getLatestVersion().createAdGroupAdServiceClient()) { MutateAdGroupAdResult mutateAdGroupAdResult = adGroupAdServiceClient .mutateAdGroupAds(Long.toString(customerId), Collections.singletonList(operation)) .getResults(0); System.out.printf( "Added a hotel ad group ad with resource name: '%s'%n", mutateAdGroupAdResult.getResourceName()); return mutateAdGroupAdResult.getResourceName(); } }
C#
private static void AddHotelAdGroupAd(GoogleAdsClient client, long customerId, string adGroupResourceName) { // Get the AdGroupAdService. AdGroupAdServiceClient service = client.GetService(Services.V18.AdGroupAdService); // Create a new ad group ad and sets the hotel ad to it. AdGroupAd adGroupAd = new AdGroupAd() { // Create a new hotel ad. Ad = new Ad() { HotelAd = new HotelAdInfo(), }, // Set the ad group. AdGroup = adGroupResourceName, // Set the ad group ad to enabled. Setting this to paused will cause an error // for hotel campaigns. For hotels pausing should happen at either the ad group or // campaign level. Status = AdGroupAdStatus.Enabled }; // Create an ad group ad operation. AdGroupAdOperation adGroupAdOperation = new AdGroupAdOperation() { Create = adGroupAd }; // Issue a mutate request to add an ad group ad. MutateAdGroupAdsResponse response = service.MutateAdGroupAds(customerId.ToString(), new AdGroupAdOperation[] { adGroupAdOperation }); MutateAdGroupAdResult addedAdGroupAd = response.Results[0]; Console.WriteLine($"Added a hotel ad group ad with resource name " + $"{addedAdGroupAd.ResourceName}."); }
PHP
private static function addHotelAdGroupAd( GoogleAdsClient $googleAdsClient, int $customerId, string $adGroupResourceName ) { // Creates a new hotel ad. $ad = new Ad([ 'hotel_ad' => new HotelAdInfo(), ]); // Creates a new ad group ad and sets the hotel ad to it. $adGroupAd = new AdGroupAd([ 'ad' => $ad, // Set the ad group ad to enabled. Setting this to paused will cause an error // for hotel campaigns. For hotels pausing should happen at either the ad group or // campaign level. 'status' => AdGroupAdStatus::ENABLED, // Sets the ad group. 'ad_group' => $adGroupResourceName ]); // Creates an ad group ad operation. $adGroupAdOperation = new AdGroupAdOperation(); $adGroupAdOperation->setCreate($adGroupAd); // Issues a mutate request to add an ad group ad. $adGroupAdServiceClient = $googleAdsClient->getAdGroupAdServiceClient(); $response = $adGroupAdServiceClient->mutateAdGroupAds( MutateAdGroupAdsRequest::build($customerId, [$adGroupAdOperation]) ); /** @var AdGroupAd $addedAdGroupAd */ $addedAdGroupAd = $response->getResults()[0]; printf( "Added a hotel ad group ad with resource name '%s'.%s", $addedAdGroupAd->getResourceName(), PHP_EOL ); }
Python
def add_hotel_ad(client, customer_id, ad_group_resource_name): ad_group_ad_service = client.get_service("AdGroupAdService") # Creates a new ad group ad and sets the hotel ad to it. ad_group_ad_operation = client.get_type("AdGroupAdOperation") ad_group_ad = ad_group_ad_operation.create ad_group_ad.ad_group = ad_group_resource_name # Set the ad group ad to enabled. Setting this to paused will cause an error # for hotel campaigns. For hotels pausing should happen at either the ad group or # campaign level. ad_group_ad.status = client.enums.AdGroupAdStatusEnum.ENABLED client.copy_from(ad_group_ad.ad.hotel_ad, client.get_type("HotelAdInfo")) # Add the ad group ad. ad_group_ad_response = ad_group_ad_service.mutate_ad_group_ads( customer_id=customer_id, operations=[ad_group_ad_operation] ) ad_group_ad_resource_name = ad_group_ad_response.results[0].resource_name print(f"Created hotel ad with resource name '{ad_group_ad_resource_name}'.") return ad_group_resource_name
Ruby
def add_hotel_ad_group_ad(client, customer_id, ad_group_resource) # Create a new hotel ad. ad_group_ad_operation = client.operation.create_resource.ad_group_ad do |aga| # Create a new ad group ad and sets the hotel ad to it. aga.ad = client.resource.ad do |ad| ad.hotel_ad = client.resource.hotel_ad_info end # Set the ad group ad to enabled. Setting this to paused will cause an error # for hotel campaigns. For hotels pausing should happen at either the ad group or # campaign level. aga.status = :ENABLED # Set the ad group. aga.ad_group = ad_group_resource end # Issue a mutate request to add the ad group ad. ad_group_ad_service = client.service.ad_group_ad response = ad_group_ad_service.mutate_ad_group_ads( customer_id: customer_id, operations: [ad_group_ad_operation], ) # Fetch the new ad group ad's resource name. ad_group_ad_resource = response.results.first.resource_name puts "Added hotel ad group ad with resource name '#{ad_group_ad_resource}'." end
Perl
sub add_hotel_ad_group_ad { my ($api_client, $customer_id, $ad_group_resource_name) = @_; # Create an ad group ad and set a hotel ad to it. my $ad_group_ad = Google::Ads::GoogleAds::V18::Resources::AdGroupAd->new({ # Set the ad group. adGroup => $ad_group_resource_name, # Set the ad to a new shopping product ad. ad => Google::Ads::GoogleAds::V18::Resources::Ad->new({ hotelAd => Google::Ads::GoogleAds::V18::Common::HotelAdInfo->new()} ), status => Google::Ads::GoogleAds::V18::Enums::AdGroupAdStatusEnum::ENABLED }); # Create an ad group ad operation. my $ad_group_ad_operation = Google::Ads::GoogleAds::V18::Services::AdGroupAdService::AdGroupAdOperation ->new({create => $ad_group_ad}); # Add the ad group ad. my $ad_group_ad_resource_name = $api_client->AdGroupAdService()->mutate({ customerId => $customer_id, operations => [$ad_group_ad_operation]})->{results}[0]{resourceName}; printf "Added a hotel ad group ad with resource name: '%s'.\n", $ad_group_ad_resource_name; return $ad_group_ad_resource_name; }