Criar grupos de Coisas legais para fazer

A criação de grupos de produtos para grupos de anúncios de atrações segue a mesma hierarquia estrutural e o mesmo processo de criação de árvore dos grupos de produtos 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 por país de destino (value) usando um nome de recurso de constante de segmentação geográfica (geoTargetConstants/{criterion_id}, como "geoTargetConstants/2840" para os EUA).
  • ActivityStateInfo: filtra pelo estado ou região de destino (value), usando um nome de recurso constante de segmentação geográfica (geoTargetConstants/{criterion_id}).
  • ActivityCityInfo: filtra pela cidade de destino (value) usando um nome de recurso de constante de segmentação geográfica (geoTargetConstants/{criterion_id}, como "geoTargetConstants/1023191" para Nova York).
  • ActivityRatingInfo: filtra pela estrela da atividade ou pela avaliação de usuários (value, um número inteiro de 1 a 5, em que 5 é a melhor).
  • ActivityIdInfo: filtra pelo ID de atividade específico definido no feed da Central de atividades (value).

Regras de hierarquia de dimensão

Ao criar uma árvore de grupo de produtos anunciados de Coisas legais para fazer, siga estas regras:

  1. Nó raiz: toda árvore de grupo de produtos anunciados precisa começar com uma única raiz AdGroupCriterion cujo listing_group.type é SUBDIVISION (ou UNIT se você quiser um único nó de captura de tudo) e cujo 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 folha precisam definir type como UNIT. A definição de cpc_bid_micros em nós UNIT é opcional para campanhas Coisas legais para fazer porque os lances são gerenciados automaticamente pela estratégia MaximizeConversionValue da campanha. Para excluir uma unidade folha da veiculação, defina negative = true no AdGroupCriterion dela.
  3. Nós de substituição ("Todos os outros"): todas as subdivisões precisam ser totalmente particionadas. 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 substituição 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