Criar grupos de Coisas legais para fazer

A criação de grupos de produtos anunciados para grupos de anúncios das Coisas legais para fazer segue a mesma hierarquia estrutural e o mesmo processo de criação de árvore dos grupos de produtos anunciados de anúncios de hotel.

Para particionar seu inventário de Coisas legais para fazer, use as dimensões de atividade especializadas disponíveis em ListingDimensionInfo:

  • ActivityCountryInfo: filtra pelo país de destino (value) usando um nome de recurso de constante de segmentação por área geográfica (geoTargetConstants/{criterion_id}, como "geoTargetConstants/2840" para os EUA).
  • ActivityStateInfo: filtra por estado ou região de destino (value) usando um nome de recurso de constante de segmentação por área geográfica (geoTargetConstants/{criterion_id}).
  • ActivityCityInfo: filtra pela cidade de destino (value) usando um nome de recurso de constante de segmentação por área geográfica (geoTargetConstants/{criterion_id}, como "geoTargetConstants/1023191" para Nova York).
  • ActivityRatingInfo: filtra por estrela de atividade ou avaliação de usuários (value, um número inteiro de 1 a 5, em que 5 é o melhor).
  • ActivityIdInfo: filtra pelo ID de atividade específico definido no feed da Central de Coisas Legais para Fazer (value).

Regras de hierarquia de dimensões

Ao criar uma árvore de grupos de produtos anunciados de Coisas Legais para Fazer, siga estas regras:

  1. Nó raiz: cada árvore de grupo de produtos anunciados precisa começar com uma única raiz AdGroupCriterion em que listing_group.type é SUBDIVISION (ou UNIT se você quiser um único nó geral) e em que case_value não está definido.
  2. Subdivisões e unidades: as ramificações intermediárias precisam definir type como SUBDIVISION, enquanto os nós de folha precisam definir type como UNIT. A configuração de cpc_bid_micros em nós UNIT é opcional para campanhas de Coisas legais para fazer, porque os lances são gerenciados automaticamente pela estratégia MaximizeConversionValue da campanha. Para excluir uma unidade de folha da veiculação, defina negative = true no AdGroupCriterion dela.
  3. Nós substitutos ("Todos os outros"): cada subdivisão precisa ser completamente particionada. Todos os filhos imediatos de uma subdivisão precisam usar o mesmo subtipo de ListingDimensionInfo, e um filho precisa ser uma instância vazia desse subtipo para capturar todo o inventário restante.

A árvore a seguir ilustra uma hierarquia válida particionada por país, cidade e ID de atividade:

Root (SUBDIVISION)
 ├── ActivityCountryInfo: "geoTargetConstants/2840" (US, SUBDIVISION)
 │    ├── ActivityCityInfo: "geoTargetConstants/1023191" (New York, SUBDIVISION)
 │    │    ├── ActivityIdInfo: "activity_123" (UNIT, biddable)
 │    │    └── ActivityIdInfo: <empty> (UNIT, "Everything else in New York")
 │    └── ActivityCityInfo: <empty> (UNIT, "Everything else in US")
 └── ActivityCountryInfo: <empty> (UNIT, negative=true, excluded)

Exemplo de código

O exemplo em Python a seguir cria um SUBDIVISION raiz usando um ID temporário (-1) e o particiona por ActivityCountryInfo em uma unidade segmentada para os EUA ("geoTargetConstants/2840") e uma unidade de fallback excluída para todos os outros países:

ad_group_service = client.get_service("AdGroupService")
ad_group_criterion_service = client.get_service("AdGroupCriterionService")
ad_group_resource_name = ad_group_service.ad_group_path(
    customer_id, ad_group_id
)
operations = []

# 1. Create the root SUBDIVISION node with temporary criterion ID -1.
root_op = client.get_type("AdGroupCriterionOperation")
root = root_op.create
root.resource_name = ad_group_criterion_service.ad_group_criterion_path(
    customer_id, ad_group_id, -1
)
root.status = client.enums.AdGroupCriterionStatusEnum.ENABLED
root.listing_group.type_ = client.enums.ListingGroupTypeEnum.SUBDIVISION
operations.append(root_op)

# 2. Create a child UNIT node targeting activities in the US.
us_op = client.get_type("AdGroupCriterionOperation")
us_unit = us_op.create
us_unit.ad_group = ad_group_resource_name
us_unit.status = client.enums.AdGroupCriterionStatusEnum.ENABLED
us_unit.listing_group.type_ = client.enums.ListingGroupTypeEnum.UNIT
us_unit.listing_group.parent_ad_group_criterion = root.resource_name
us_unit.listing_group.case_value.activity_country.value = "geoTargetConstants/2840"
operations.append(us_op)

# 3. Create the required fallback ("Everything else") UNIT node.
other_op = client.get_type("AdGroupCriterionOperation")
other_unit = other_op.create
other_unit.ad_group = ad_group_resource_name
other_unit.negative = True
other_unit.listing_group.type_ = client.enums.ListingGroupTypeEnum.UNIT
other_unit.listing_group.parent_ad_group_criterion = root.resource_name
client.copy_from(
    other_unit.listing_group.case_value.activity_country,
    client.get_type("ActivityCountryInfo"),
)
operations.append(other_op)

response = ad_group_criterion_service.mutate_ad_group_criteria(
    customer_id=customer_id, operations=operations
)

A seguir