יצירת קבוצות של דברים שאפשר לעשות

ההיררכיה המבנית ותהליך בניית העץ של קבוצות של כרטיסי מוצר בקבוצות של מודעות בפלטפורמת "דברים שאפשר לעשות" זהים לאלה של קבוצות של כרטיסי מוצר במודעות להזמנת חדרים.

כדי לחלק את מלאי המוצרים של "דברים שאפשר לעשות", משתמשים במאפייני הפעילות המיוחדים שזמינים ב-ListingDimensionInfo:

  • ‫ActivityCountryInfo: סינון לפי מדינת היעד (value), באמצעות שם משאב של קבוע טירגוט גיאוגרפי (geoTargetConstants/{criterion_id}, למשל "geoTargetConstants/2840" לארה"ב).
  • ‫ActivityStateInfo: סינון לפי המדינה או האזור של היעד (value), באמצעות שם המשאב Geo Target Constant (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
)

המאמרים הבאים