Crea un anuncio del grupo de anuncios de hotel

Antes de crear un anuncio de hotel, asegúrate de tener una campaña de hoteles existente y un grupo de anuncios con su type establecido en HOTEL_ADS. Si adjuntas un objeto HotelAdInfo a un objeto AdGroup que no está configurado para las campañas de hoteles, se activará un error de mutación de la API.

La creación de un anuncio de hotel implica dos pasos:

  1. Crea un Ad y configura su campo hotel_ad en una nueva instancia de HotelAdInfo.
  2. Crea un AdGroupAd para asociar el Ad con tu grupo de anuncios de hotel.

Si bien puedes crear varios anuncios del grupo de anuncios en un solo grupo de anuncios de hotel, la distribución de las impresiones entre ellos es arbitraria. Para simplificar los informes y la atribución de métricas, crea solo un anuncio del grupo de anuncios por grupo de anuncios.

Ejemplo de código

En el siguiente ejemplo de código, se muestra cómo crear y asociar un anuncio de hotel con un grupo de anuncios existente:

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.V25.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: GoogleAdsClient, customer_id: str, ad_group_resource_name: str
) -> str:
    ad_group_ad_service: AdGroupAdServiceClient = client.get_service(
        "AdGroupAdService"
    )

    # Creates a new ad group ad and sets the hotel ad to it.
    ad_group_ad_operation: AdGroupAdOperation = client.get_type(
        "AdGroupAdOperation"
    )
    ad_group_ad: AdGroupAd = 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: MutateAdGroupAdsResponse = (
        ad_group_ad_service.mutate_ad_group_ads(
            customer_id=customer_id, operations=[ad_group_ad_operation]
        )
    )

    ad_group_ad_resource_name: str = 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::V25::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::V25::Resources::Ad->new({
          hotelAd => Google::Ads::GoogleAds::V25::Common::HotelAdInfo->new()}
      ),
      status => Google::Ads::GoogleAds::V25::Enums::AdGroupAdStatusEnum::ENABLED
    });

  # Create an ad group ad operation.
  my $ad_group_ad_operation =
    Google::Ads::GoogleAds::V25::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;
}
      

curl

¿Qué sigue?