Créer des groupes de fiches "Activités à découvrir"

La création de groupes de fiches pour les groupes d'annonces "À faire" suit la même hiérarchie structurelle et le même processus de création d'arborescence que les groupes de fiches Hotel Ads.

Pour partitionner votre inventaire d'Activités à découvrir, utilisez les dimensions d'activité spécialisées disponibles dans ListingDimensionInfo :

  • ActivityCountryInfo : filtre par pays de destination (value) à l'aide d'un nom de ressource constante de ciblage géographique (geoTargetConstants/{criterion_id}, tel que "geoTargetConstants/2840" pour les États-Unis).
  • ActivityStateInfo : filtre par état ou région de destination (value), à l'aide d'un nom de ressource constante de ciblage géographique (geoTargetConstants/{criterion_id}).
  • ActivityCityInfo : filtre par ville de destination (value) à l'aide d'un nom de ressource constante de ciblage géographique (geoTargetConstants/{criterion_id}, tel que "geoTargetConstants/1023191" pour New York).
  • ActivityRatingInfo : filtre par note de l'activité ou note des visiteurs (value, un entier compris entre 1 et 5, où 5 est la meilleure note).
  • ActivityIdInfo : filtre par l'ID d'activité spécifique défini dans votre flux Things to do Center (value).

Règles de hiérarchie des dimensions

Lorsque vous créez un arbre de groupe de fiches "Activités à découvrir", suivez ces règles :

  1. Nœud racine : chaque arbre de groupes de fiches doit commencer par une seule racine AdGroupCriterion dont listing_group.type est défini sur SUBDIVISION (ou UNIT si vous souhaitez un seul nœud générique) et dont case_value n'est pas défini.
  2. Subdivisions et unités : les branches intermédiaires doivent définir type sur SUBDIVISION, tandis que les nœuds feuilles doivent définir type sur UNIT. La définition de cpc_bid_micros sur les nœuds UNIT est facultative pour les campagnes Activités à découvrir, car les enchères sont gérées automatiquement par la stratégie MaximizeConversionValue de la campagne. Pour exclure une unité feuille de la diffusion, définissez negative = true sur son AdGroupCriterion.
  3. Nœuds de secours ("Tout le reste") : chaque subdivision doit être entièrement partitionnée. Tous les enfants immédiats d'une subdivision doivent utiliser le même sous-type ListingDimensionInfo, et l'un d'eux doit être une instance vide de ce sous-type pour capturer tout l'inventaire restant.

L'arborescence suivante illustre une hiérarchie valide partitionnée par pays, ville et ID d'activité :

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)

Exemple de code

L'exemple Python suivant crée un SUBDIVISION racine à l'aide d'un ID temporaire (-1) et le partitionne par ActivityCountryInfo en une unité ciblée pour les États-Unis ("geoTargetConstants/2840") et une unité de secours exclue pour tous les autres pays :

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
)

Étape suivante