Tworzenie grup informacji o produktach „Atrakcje”

Tworzenie grup plików w grupach reklam typu „Atrakcje” przebiega według tej samej hierarchii strukturalnej i procesu tworzenia drzewa co grupy plików w Reklamach hoteli.

Aby podzielić zasoby reklamowe dotyczące atrakcji, użyj specjalnych wymiarów aktywności dostępnych w ListingDimensionInfo:

  • ActivityCountryInfo: filtruje według kraju docelowego (value) za pomocą nazwy zasobu stałej kierowania geograficznego (geoTargetConstants/{criterion_id}, np. "geoTargetConstants/2840" w przypadku Stanów Zjednoczonych).
  • ActivityStateInfo: filtruje według stanu lub regionu docelowego (value) przy użyciu nazwy zasobu stałej kierowania geograficznego (geoTargetConstants/{criterion_id}).
  • ActivityCityInfo: filtruje według miasta docelowego (value) przy użyciu nazwy zasobu stałej kierowania geograficznego (geoTargetConstants/{criterion_id}, np. "geoTargetConstants/1023191" w przypadku Nowego Jorku).
  • ActivityRatingInfo: filtruje według gwiazdki aktywności lub oceny użytkownika (value, liczba całkowita z zakresu od 1 do 5, gdzie 5 to najlepsza ocena).
  • ActivityIdInfo: filtruje według konkretnego identyfikatora aktywności zdefiniowanego w pliku danych Centrum atrakcji (value).

Reguły hierarchii wymiarów

Podczas tworzenia drzewa grup informacji o produktach „Atrakcje” postępuj zgodnie z tymi regułami:

  1. Węzeł główny: każde drzewo grup informacji o produktach musi zaczynać się od jednego węzła głównegoAdGroupCriterion, którego listing_group.type to SUBDIVISION (lub UNIT, jeśli chcesz mieć jeden węzeł obejmujący wszystkie produkty), a case_value jest nieustawione.
  2. Podziały i jednostki: gałęzie pośrednie muszą mieć wartość type ustawioną na SUBDIVISION, a węzły końcowe muszą mieć wartość type ustawioną na UNIT. Ustawienie cpc_bid_micros w węzłach UNIT jest opcjonalne w przypadku kampanii w Atrakcjach, ponieważ ustalanie stawek jest zarządzane automatycznie przez strategię MaximizeConversionValue kampanii. Aby wykluczyć jednostkę podrzędną z wyświetlania, ustaw wartość negative = true w jej polu AdGroupCriterion.
  3. Węzły rezerwowe („Wszystkie pozostałe”): każdy podział musi być całkowicie podzielony na partycje. Wszystkie bezpośrednie elementy podziału muszą używać tego samego ListingDimensionInfopodtypu, a jeden z nich musi być pustą instancją tego podtypu, aby uwzględnić wszystkie pozostałe zasoby reklamowe.

Poniższe drzewo ilustruje prawidłową hierarchię podzieloną według kraju, miasta i identyfikatora aktywności:

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)

Przykładowy kod

Poniższy przykład w Pythonie tworzy węzeł główny SUBDIVISION przy użyciu tymczasowego identyfikatora (-1) i dzieli go według ActivityCountryInfo na jednostkę docelową dla Stanów Zjednoczonych ("geoTargetConstants/2840") oraz wykluczoną jednostkę rezerwową dla wszystkich pozostałych krajów:

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
)

Co dalej?