Crea grupos de fichas de Cosas que hacer

La creación de grupos de fichas para los grupos de anuncios de Cosas que hacer sigue la misma jerarquía estructural y el mismo proceso de creación de árboles que los grupos de fichas de anuncios de hoteles.

Para particionar tu inventario de Cosas que hacer, usa las dimensiones de actividad especializadas disponibles en ListingDimensionInfo:

  • ActivityCountryInfo: Filtra por el país de destino (value) con un nombre de recurso de constante de segmentación geográfica (geoTargetConstants/{criterion_id}, como "geoTargetConstants/2840" para EE.UU.).
  • ActivityStateInfo: Filtra por el estado o la región de destino (value) con un nombre de recurso de constante de segmentación geográfica (geoTargetConstants/{criterion_id}).
  • ActivityCityInfo: Filtra por la ciudad de destino (value), utilizando un nombre de recurso de constante de región geográfica de segmentación (geoTargetConstants/{criterion_id}, como "geoTargetConstants/1023191" para la ciudad de Nueva York).
  • ActivityRatingInfo: Filtra por la calificación de estrellas de la actividad o la calificación de los usuarios (value, un número entero de 1 a 5, donde 5 es la mejor).
  • ActivityIdInfo: Filtra por el ID de actividad específico definido en tu feed del Centro de Actividades (value).

Reglas de jerarquía de dimensiones

Cuando crees un árbol de grupos de fichas de Cosas que hacer, sigue estas reglas:

  1. Nodo raíz: Cada árbol de grupos de fichas debe comenzar con un solo AdGroupCriterion raíz cuyo listing_group.type sea SUBDIVISION (o UNIT si deseas un solo nodo general) y cuyo case_value no esté configurado.
  2. Subdivisiones y unidades: Las ramas intermedias deben establecer type en SUBDIVISION, mientras que los nodos de hoja deben establecer type en UNIT. La configuración de cpc_bid_micros en los nodos UNIT es opcional para las campañas de Cosas que hacer, ya que las ofertas se administran automáticamente con la estrategia MaximizeConversionValue de la campaña. Para excluir una unidad de hoja de la publicación, establece negative = true en su AdGroupCriterion.
  3. Nodos de resguardo ("Todo lo demás"): Cada subdivisión debe estar completamente particionada. Todos los elementos secundarios inmediatos de una subdivisión deben usar el mismo subtipo de ListingDimensionInfo, y un elemento secundario debe ser una instancia vacía de ese subtipo para capturar todo el inventario restante.

En el siguiente árbol, se ilustra una jerarquía válida particionada por país, ciudad y ID de actividad:

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)

Ejemplo de código

En el siguiente ejemplo de Python, se crea un SUBDIVISION raíz con un ID temporal (-1) y se particiona por ActivityCountryInfo en una unidad segmentada para EE.UU. ("geoTargetConstants/2840") y una unidad de resguardo excluida para todos los demás 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
)

¿Qué sigue?