إنشاء مجموعات بيانات "اقتراحات"

يتبع إنشاء مجموعات بيانات لـ "المجموعات الإعلانية للنشاطات المقترَحة" التسلسل الهرمي الهيكلي نفسه وعملية إنشاء الشجرة نفسها التي تتبعها مجموعات بيانات إعلانات الفنادق.

لتقسيم مستودع "نشاطات مقترحة"، استخدِم سمات النشاط المتخصّصة المتاحة في ListingDimensionInfo:

  • ‫ActivityCountryInfo: تتم الفلترة حسب بلد الوجهة (value)، باستخدام اسم مورد ثابت للموقع الجغرافي المستهدف (geoTargetConstants/{criterion_id}، مثل "geoTargetConstants/2840" للولايات المتحدة).
  • ‫ActivityStateInfo: لفلترة المنتجات حسب الولاية أو المنطقة المقصودة (value)، باستخدام اسم مورد ثابت للموقع الجغرافي المستهدف (geoTargetConstants/{criterion_id}).
  • ‫ActivityCityInfo: لفلترة النتائج حسب مدينة الوجهة (value)، باستخدام اسم مورد ثابت للموقع الجغرافي المستهدف (geoTargetConstants/{criterion_id}، مثل "geoTargetConstants/1023191" لمدينة نيويورك).
  • ‫ActivityRatingInfo: لفلترة النتائج حسب تقييم النشاط بالنجوم أو تقييم المستخدمين (value، عدد صحيح من 1 إلى 5، حيث يمثّل 5 أفضل تقييم)
  • ActivityIdInfo: لفلترة النتائج حسب معرّف النشاط المحدّد في خلاصة Things to do Center ‏ (value)

قواعد التسلسل الهرمي للسمات

عند إنشاء شجرة مجموعات بيانات "نشاطات مقترَحة"، اتّبِع القواعد التالية:

  1. العقدة الجذرية: يجب أن تبدأ كل شجرة مجموعات بيانات بجذر واحد AdGroupCriterion تكون قيمة listing_group.type له هي SUBDIVISION (أو UNIT إذا أردت عقدة واحدة شاملة) وتكون قيمة case_value له غير محدّدة.
  2. الأقسام الفرعية والوحدات: يجب ضبط السمة type على القيمة SUBDIVISION في الفروع المتوسطة، بينما يجب ضبط السمة type على القيمة UNIT في العُقد الطرفية. يُعدّ ضبط السمة cpc_bid_micros في عُقد UNIT اختياريًا لحملات "نشاطات مقترَحة" لأنّه تتم إدارة عروض الأسعار تلقائيًا من خلال استراتيجية MaximizeConversionValue في الحملة. لاستبعاد وحدة فرعية من العرض، اضبط negative = true على AdGroupCriterion.
  3. العُقد الاحتياطية ("كل شيء آخر"): يجب تقسيم كل قسم فرعي بالكامل. يجب أن تستخدم جميع العناصر الفرعية المباشرة للتقسيم الفرعي النوع الفرعي نفسه من ListingDimensionInfo، ويجب أن يكون أحد العناصر الفرعية نسخة فارغة من هذا النوع الفرعي لتسجيل كل المستودع المتبقي.

توضّح الشجرة التالية تسلسلاً هرميًا صالحًا مقسّمًا حسب البلد والمدينة ورقم تعريف النشاط:

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)

مثال على الرمز البرمجي

ينشئ مثال Python التالي SUBDIVISION جذرًا باستخدام معرّف مؤقت (-1) ويقسّمه حسب ActivityCountryInfo إلى وحدة مستهدَفة للولايات المتحدة ("geoTargetConstants/2840") ووحدة احتياطية مستبعَدة لجميع البلدان الأخرى:

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
)

الخطوات التالية