Vídeo: confira a palestra dos grupos de produtos anunciados do workshop de 2019
Os grupos de anúncios de hotel são compatíveis com o particionamento dos seus hotéis em vários grupos de fichas. em várias dimensões para que você possa ajustar os lances para cada grupo de forma adequada. Considere a árvore abaixo, onde, no primeiro nível, os hotéis foram amplamente divididas em hotéis de 5 estrelas, 4 estrelas e outras classes de hotéis. Na segunda os hotéis em outras classificações foram divididos como "Estados Unidos" hotéis, "Reino Unido" e hotéis em outras regiões.
Cada nó da árvore é uma subdivisão ou uma unidade, conforme definido pela
ListingGroupType
Uma subdivisão introduz uma
novo nível na árvore, enquanto as unidades são folhas da árvore. Cada subdivisão precisa
sempre serão totalmente particionados, por isso precisam conter um nó que represente
Outro. No exemplo, a raiz e os nós Hotel Class: (Other) são
subdivisões. Essa estrutura de árvore com subdivisões e unidades permite que você defina
lances no nível da unidade e garante que cada listagem de hotéis
e apenas um nó de unidade na árvore.
Os nós são objetos da classe ListingGroupInfo
,
que contém o campo ListingGroupType
que
indica se os nós são uma unidade ou uma subdivisão. Definindo ListingGroupInfo
como
listing_group
de AdGroupCriterion
vinculará a
AdGroup
.
Como definir lances de porcentagem de CPC
Você pode definir percent_cpc_bid_micros
de
AdGroupCriterion
somente em nós de unidade. Tentando
ao fazer isso em nós de subdivisão
falhará com um erro.
Como listar dimensões
Um ListingGroupInfo
também tem um
case_value
, que é
um ListingDimensionInfo
que contém um dos
vários tipos de dimensão. Um ListingGroupInfo
representa os valores associados
pelos seus hotéis, como ID, país ou classificação do hotel. Uma descrição completa
os tipos de ListingDimensionInfo
disponíveis estão disponíveis na referência
na documentação do Google.
Cada filho imediato de uma subdivisão precisa ter um case_value
do mesmo
Subtipo ListingDimensionInfo
. Somente o nó raiz não tem um case_value
.
Lembre-se de que cada subdivisão precisa conter uma string case_value
de
o tipo correto, representando "todos os outros valores".
Para mais detalhes, confira o snippet de código a seguir, que adiciona o primeiro da árvore do grupo de fichas.
Java
private static String addLevel1Nodes( long customerId, long adGroupId, String rootResourceName, List<AdGroupCriterionOperation> operations, long percentCpcBidMicroAmount) { // Creates hotel class info and dimension info for 5-star hotels. ListingDimensionInfo fiveStarredDimensionInfo = ListingDimensionInfo.newBuilder() .setHotelClass(HotelClassInfo.newBuilder().setValue(5).build()) .build(); // Creates listing group info for 5-star hotels as a UNIT node. ListingGroupInfo fiveStarredUnit = ListingGroupInfo.newBuilder() .setType(ListingGroupType.UNIT) .setParentAdGroupCriterion(rootResourceName) .setCaseValue(fiveStarredDimensionInfo) .build(); // Creates an ad group criterion for 5-star hotels. AdGroupCriterion fiveStarredAdGroupCriterion = createAdGroupCriterion(customerId, adGroupId, fiveStarredUnit, percentCpcBidMicroAmount); // Decrements the temp ID for the next ad group criterion. AdGroupCriterionOperation operation = generateCreateOperation(fiveStarredAdGroupCriterion); operations.add(operation); // You can also create more UNIT nodes for other hotel classes by copying the above code in // this method and modifying the value passed to HotelClassInfo() to the value you want. // For instance, passing 4 instead of 5 in the above code will create a UNIT node of 4-star // hotels instead. // Creates hotel class info and dimension info for other hotel classes by not specifying // any attributes on those object. ListingDimensionInfo otherHotelsDimensionInfo = ListingDimensionInfo.newBuilder() .setHotelClass(HotelClassInfo.newBuilder().build()) .build(); // Creates listing group info for other hotel classes as a SUBDIVISION node, which will be // used as a parent node for children nodes of the next level. ListingGroupInfo otherHotelsSubdivision = createListingGroupInfo( ListingGroupType.SUBDIVISION, rootResourceName, otherHotelsDimensionInfo); // Creates an ad group criterion for other hotel classes. AdGroupCriterion otherHotelsAdGroupCriterion = createAdGroupCriterion( customerId, adGroupId, otherHotelsSubdivision, percentCpcBidMicroAmount); operation = generateCreateOperation(otherHotelsAdGroupCriterion); operations.add(operation); return otherHotelsAdGroupCriterion.getResourceName(); }
C#
private string AddLevel1Nodes(long customerId, long adGroupId, string rootResourceName, List<AdGroupCriterionOperation> operations, long percentCpcBidMicroAmount) { // Create listing dimension info for 5-star class hotels. ListingDimensionInfo fiveStarredListingDimensionInfo = new ListingDimensionInfo { HotelClass = new HotelClassInfo { Value = 5 } }; // Create a listing group info for 5-star hotels as a UNIT node. ListingGroupInfo fiveStarredUnit = CreateListingGroupInfo(ListingGroupType.Unit, rootResourceName, fiveStarredListingDimensionInfo); // Create an ad group criterion for 5-star hotels. AdGroupCriterion fiveStarredAdGroupCriterion = CreateAdGroupCriterion(customerId, adGroupId, fiveStarredUnit, percentCpcBidMicroAmount); // Create an operation and add it to the list of operations. operations.Add(new AdGroupCriterionOperation { Create = fiveStarredAdGroupCriterion }); // Decrement the temp ID for the next ad group criterion. nextTempId--; // You can also create more UNIT nodes for other hotel classes by copying the above code // in this method and modifying the value passed to HotelClassInfo(). // For instance, passing 4 instead of 5 in the above code will instead create a UNIT // node of 4-star hotels. // Create hotel class info and dimension info for other hotel classes by *not* // specifying any attributes on those object. ListingDimensionInfo otherHotelsListingDimensionInfo = new ListingDimensionInfo { HotelClass = new HotelClassInfo() }; // Create listing group info for other hotel classes as a SUBDIVISION node, which will // be used as a parent node for children nodes of the next level. ListingGroupInfo otherHotelsSubdivisionListingGroupInfo = CreateListingGroupInfo (ListingGroupType.Subdivision, rootResourceName, otherHotelsListingDimensionInfo); // Create an ad group criterion for other hotel classes. AdGroupCriterion otherHotelsAdGroupCriterion = CreateAdGroupCriterion(customerId, adGroupId, otherHotelsSubdivisionListingGroupInfo, percentCpcBidMicroAmount); // Create an operation and add it to the list of operations. operations.Add(new AdGroupCriterionOperation { Create = otherHotelsAdGroupCriterion }); // Decrement the temp ID for the next ad group criterion. nextTempId--; return otherHotelsAdGroupCriterion.ResourceName; }
PHP
private static function addLevel1Nodes( int $customerId, int $adGroupId, string $rootResourceName, array &$operations, int $percentCpcBidMicroAmount ) { // Creates hotel class info and dimension info for 5-star hotels. $fiveStarredDimensionInfo = new ListingDimensionInfo([ 'hotel_class' => new HotelClassInfo(['value' => 5]) ]); // Creates listing group info for 5-star hotels as a UNIT node. $fiveStarredUnit = self::createListingGroupInfo( ListingGroupType::UNIT, $rootResourceName, $fiveStarredDimensionInfo ); // Creates an ad group criterion for 5-star hotels. $fiveStarredAdGroupCriterion = self::createAdGroupCriterion( $customerId, $adGroupId, $fiveStarredUnit, $percentCpcBidMicroAmount ); // Decrements the temp ID for the next ad group criterion. self::$nextTempId--; $operation = self::generateCreateOperation($fiveStarredAdGroupCriterion); $operations[] = $operation; // You can also create more UNIT nodes for other hotel classes by copying the above code in // this method and modifying the value passed to HotelClassInfo() to the value you want. // For instance, passing 4 instead of 5 in the above code will create a UNIT node of 4-star // hotels instead. // Creates hotel class info and dimension info for other hotel classes by *not* specifying // any attributes on those object. $othersHotelsDimensionInfo = new ListingDimensionInfo([ 'hotel_class' => new HotelClassInfo() ]); // Creates listing group info for other hotel classes as a SUBDIVISION node, which will be // used as a parent node for children nodes of the next level. $otherHotelsSubDivision = self::createListingGroupInfo( ListingGroupType::SUBDIVISION, $rootResourceName, $othersHotelsDimensionInfo ); // Creates an ad group criterion for other hotel classes. $otherHotelsAdGroupCriterion = self::createAdGroupCriterion( $customerId, $adGroupId, $otherHotelsSubDivision, $percentCpcBidMicroAmount ); $operation = self::generateCreateOperation($otherHotelsAdGroupCriterion); $operations[] = $operation; self::$nextTempId--; return $otherHotelsAdGroupCriterion->getResourceName(); }
Python
def add_level1_nodes( client, customer_id, ad_group_id, root_resource_name, operations, percent_cpc_bid_micro_amount, ): """Creates child nodes on level 1, partitioned by the hotel class info. Args: client: The Google Ads API client. customer_id: The Google Ads customer ID. ad_group_id: The ad group ID to which the hotel listing group will be added. root_resource_name: The string resource name of the listing group's root node. operations: A list of AdGroupCriterionOperations. percent_cpc_bid_micro_amount: The CPC bid micro amount to be set on created ad group criteria. Returns: The string resource name of the "other hotel classes" node, which serves as the parent node for the next level of the listing tree. """ global next_temp_id # Create listing dimension info for 5-star class hotels. five_starred_listing_dimension_info = client.get_type( "ListingDimensionInfo" ) five_starred_listing_dimension_info.hotel_class.value = 5 # Create a listing group info for 5-star hotels as a UNIT node. five_starred_unit = create_listing_group_info( client, client.enums.ListingGroupTypeEnum.UNIT, root_resource_name, five_starred_listing_dimension_info, ) # Create an ad group criterion for 5-star hotels. five_starred_ad_group_criterion = create_ad_group_criterion( client, customer_id, ad_group_id, five_starred_unit, percent_cpc_bid_micro_amount, ) # Create an operation and add it to the list of operations. five_starred_ad_group_criterion_operation = client.get_type( "AdGroupCriterionOperation" ) client.copy_from( five_starred_ad_group_criterion_operation.create, five_starred_ad_group_criterion, ) operations.append(five_starred_ad_group_criterion_operation) # Decrement the temp ID for the next ad group criterion. next_temp_id -= 1 # You can also create more UNIT nodes for other hotel classes by copying the # above code in this method and modifying the hotel class value. # For instance, passing 4 instead of 5 in the above code will instead create # a UNIT node of 4-star hotels. # Create hotel class info and dimension info without any specifying # attributes. This node will then represent hotel classes other than those # already covered by UNIT nodes at this level. other_hotels_listing_dimension_info = client.get_type( "ListingDimensionInfo" ) # Set "hotel_class" as the oneof field on the ListingDimensionInfo object # without specifying the optional hotel_class field. client.copy_from( other_hotels_listing_dimension_info.hotel_class, client.get_type("HotelClassInfo"), ) # Create listing group info for other hotel classes as a SUBDIVISION node, # which will be used as a parent node for children nodes of the next level. other_hotels_subdivision_listing_group_info = create_listing_group_info( client, client.enums.ListingGroupTypeEnum.SUBDIVISION, root_resource_name, other_hotels_listing_dimension_info, ) # Create an ad group criterion for other hotel classes. other_hotels_ad_group_criterion = create_ad_group_criterion( client, customer_id, ad_group_id, other_hotels_subdivision_listing_group_info, percent_cpc_bid_micro_amount, ) # Create an operation and add it to the list of operations. other_hotels_ad_group_criterion_operation = client.get_type( "AdGroupCriterionOperation" ) client.copy_from( other_hotels_ad_group_criterion_operation.create, other_hotels_ad_group_criterion, ) operations.append(other_hotels_ad_group_criterion_operation) # Decrement the temp ID for the next ad group criterion. next_temp_id -= 1 return other_hotels_ad_group_criterion.resource_name
Ruby
def add_level1_nodes( client, customer_id, ad_group_id, root_resource_name, operations, percent_cpc_bid_micro_amount) # Creates hotel class info and dimension info for 5-star hotels. five_starred_dimension_info = client.resource.listing_dimension_info do |d| d.hotel_class = client.resource.hotel_class_info do |c| c.value = 5 end end # Creates listing group info for 5-star hotels as a UNIT node. five_starred_unit = create_listing_group_info( client, :UNIT, root_resource_name, five_starred_dimension_info, ) # Creates an ad group criterion for 5-star hotels. five_starred_ad_group_criterion = create_ad_group_criterion( client, customer_id, ad_group_id, five_starred_unit, percent_cpc_bid_micro_amount, ) operations << generate_create_operation( client, five_starred_ad_group_criterion, ) # You can also create more UNIT nodes for other hotel classes by copying the # above code in this method and modifying the value passed to HotelClassInfo() # to the value you want. # For instance, passing 4 instead of 5 in the above code will create a UNIT # node of 4-star hotels instead. # Creates hotel class info and dimension info for other hotel classes # by *not* specifying any attributes on those object. other_hotels_dimention_info = client.resource.listing_dimension_info do |d| d.hotel_class = client.resource.hotel_class_info end # Creates listing group info for other hotel classes as a SUBDIVISION node, # which will be used as a parent node for children nodes of the next level. other_hotels_subdivision = create_listing_group_info( client, :SUBDIVISION, root_resource_name, other_hotels_dimention_info, ) # Creates an ad group criterion for other hotel classes. other_hotels_ad_group_criterion = create_ad_group_criterion( client, customer_id, ad_group_id, other_hotels_subdivision, percent_cpc_bid_micro_amount, ) operations << generate_create_operation( client, other_hotels_ad_group_criterion, ) other_hotels_ad_group_criterion.resource_name end
Perl
sub add_level_1_nodes { my ($customer_id, $ad_group_id, $root_resource_name, $operations, $percent_cpc_bid_micro_amount) = @_; # Create hotel class info and dimension info for 5-star hotels. my $five_starred_dimension_info = Google::Ads::GoogleAds::V17::Common::ListingDimensionInfo->new({ hotelClass => Google::Ads::GoogleAds::V17::Common::HotelClassInfo->new({ value => 5 })}); # Create listing group info for 5-star hotels as a UNIT node. my $five_starred_unit = create_listing_group_info(UNIT, $root_resource_name, $five_starred_dimension_info); # Create an ad group criterion for 5-star hotels. my $five_starred_ad_group_criterion = create_ad_group_criterion($customer_id, $ad_group_id, $five_starred_unit, $percent_cpc_bid_micro_amount); my $operation = generate_create_operation($five_starred_ad_group_criterion); push @$operations, $operation; # You can also create more UNIT nodes for other hotel classes by copying the # above code in this method and modifying the value passed to HotelClassInfo # to the value you want. For instance, passing 4 instead of 5 in the above code # will create a UNIT node of 4-star hotels instead. # Create hotel class info and dimension info for other hotel classes by *not* # specifying any attributes on those object. my $others_hotels_dimension_info = Google::Ads::GoogleAds::V17::Common::ListingDimensionInfo->new({ hotelClass => Google::Ads::GoogleAds::V17::Common::HotelClassInfo->new()} ); # Create listing group info for other hotel classes as a SUBDIVISION node, which # will be used as a parent node for children nodes of the next level. my $other_hotels_subdivision = create_listing_group_info(SUBDIVISION, $root_resource_name, $others_hotels_dimension_info); # Create an ad group criterion for other hotel classes. my $other_hotels_ad_group_criterion = create_ad_group_criterion($customer_id, $ad_group_id, $other_hotels_subdivision, $percent_cpc_bid_micro_amount); $operation = generate_create_operation($other_hotels_ad_group_criterion); push @$operations, $operation; return $other_hotels_ad_group_criterion->{resourceName}; }
Dimensões disponíveis para ListingDimensionInfo
Os seguintes tipos de ListingDimensionInfo
estão disponíveis para anúncios de hotel:
IDs temporários
Os critérios do grupo de anúncios não recebem IDs até que a solicitação de mutação que cria
são processados pelo servidor. No entanto, um ListingGroupInfo
é inválido até
ela está completa, portanto, sempre que você criar uma subdivisão, também deverá criar em
pelo menos um dos filhos na mesma operação.
Para permitir que você defina o parent_ad_group_criterion
do
ListingGroupInfo
para os nós filhos, é possível usar
IDs temporários de critério. Eles são exclusivos localmente (e não globalmente)
identificadores que se aplicam somente dentro do contexto de uma única solicitação de mutação. Qualquer um
um número inteiro negativo (por exemplo, -1
) pode ser usado como um ID temporário.
Quando a solicitação é processada, cada AdGroupCriterion
recebe um ID global positivo, como de costume.