הקצאת טירגוט

הצגת מודעות ליצירת ביקוש נשלטת באמצעות טירגוט שמוקצה לשותף הורה, למפרסם, לפריט ולתבניות של קבוצות מודעות.

כדאי להשתמש בטירגוט שהוקצה לפריט בקמפיין ליצירת ביקוש ולקבוצת מודעות כדי להגיע ללקוחות האידיאליים ולשפר את ביצועים ברמת הקמפיין.

החלטה איפה להקצות את הטירגוט

אפשר להקצות טירגוט גם לפריטים בקמפיינים ליצירת ביקוש וגם לקבוצות של מודעות.

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

תמיכה בטירגוט לפי סוג משאב בקמפיינים ליצירת ביקוש

כל סוג משאב תומך בסוגים מסוימים של טירגוט.

הרשימה הבאה מפרטת את סוגי הטירגוט שנתמכים בפריטי קמפיין ליצירת ביקוש:

  • TARGETING_TYPE_CARRIER_AND_ISP
  • TARGETING_TYPE_DAY_AND_TIME
  • TARGETING_TYPE_DEVICE_MAKE_MODEL
  • TARGETING_TYPE_DEVICE_TYPE
  • TARGETING_TYPE_GEO_REGION
  • TARGETING_TYPE_KEYWORD
  • TARGETING_TYPE_LANGUAGE
  • TARGETING_TYPE_NEGATIVE_KEYWORD_LIST
  • TARGETING_TYPE_OPERATING_SYSTEM
  • TARGETING_TYPE_POI

אלה סוגי הטירגוט שנתמכים בקבוצות של מודעות ליצירת ביקוש:

  • TARGETING_TYPE_AGE_RANGE
  • TARGETING_TYPE_APP
  • TARGETING_TYPE_APP_CATEGORY
  • TARGETING_TYPE_AUDIENCE_GROUP
  • TARGETING_TYPE_CATEGORY
  • TARGETING_TYPE_GENDER
  • TARGETING_TYPE_GEO_REGION
  • TARGETING_TYPE_HOUSEHOLD_INCOME
  • TARGETING_TYPE_KEYWORD
  • TARGETING_TYPE_LANGUAGE
  • TARGETING_TYPE_PARENTAL_STATUS
  • TARGETING_TYPE_URL
  • TARGETING_TYPE_YOUTUBE_CHANNEL
  • TARGETING_TYPE_YOUTUBE_VIDEO

התמיכה ב-TARGETING_TYPE_GEO_REGION, ב-TARGETING_TYPE_POI וב-TARGETING_TYPE_LANGUAGE תלויה בהגדרה של השדה demandGenSettings.geoLanguageTargetingEnabled במשאב ההורה LineItem. אם הערך בשדה הוא True, אפשר להקצות טירגוט לפי מיקום ושפה רק לפריט ההזמנה הראשי. אם הערך בשדה הוא false, אפשר להקצות את הטירגוט הזה רק לקבוצות מודעות ספציפיות.

חיפוש אפשרויות טירגוט זמינות

הטירגוט מזוהה על סמך הסוג שלו. כדי לזהות אפשרויות טירגוט, אפשר להשתמש באחת מהשיטות הבאות:

אחזור טירגוט קיים

הטירגוט הקיים מגביל את הטירגוט שאפשר להוסיף לפריט או לקבוצת מודעות.

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

אפשר לאחזר את הטירגוט הקיים בכל סוגי הטירגוט באמצעות בקשות מסוג bulk list.

אחזור של טירגוט קיים של שותפים ומפרסמים

כך מקבלים את הטירגוט הקיים של מפרסם, כולל טירגוט שותפים שעבר בירושה:

Python

# Provide the ID of the advertiser.
advertiser_id = advertiser-id

# Create the page token variable.
next_page_token = ""

while True:
  # Execute the list request.
  response = (
      service.advertisers()
      .listAssignedTargetingOptions(
          advertiserId=advertiser_id,
          pageToken=next_page_token,
      )
      .execute()
  )

  # If response is not empty, display the retrieved assigned targeting
  # options.
  if response:
    for assigned_targeting_option in response.get(
        "assignedTargetingOptions", []
    ):
      ato_name = assigned_targeting_option.get(
          "name", None
      )
      if ato_name:
        print(f"Assigned Targeting Option {ato_name}.")
  else:
    print(f"No targeting is currently assigned to {advertiser_id}.")
    sys.exit(1)
  # Update the next page token.
  # Break out of loop if there is no next page.
  if "nextPageToken" in response:
    next_page_token = response["nextPageToken"]
  else:
    break

אחזור של טירגוט של פריט

כך מקצים את הטירגוט הקיים ישירות לפריט:

Python

# Provide the ID of the parent advertiser.
advertiser_id = advertiser-id

# Provide the ID of the Demand Gen line item.
line_item_id = line-item-id

# Create the page token variable.
next_page_token = ""

while True:
  # Execute the list request.
  response = (
      service.advertisers()
      .lineItems()
      .bulkListAssignedTargetingOptions(
          advertiserId=advertiser_id,
          lineItemIds=[line_item_id],
          pageToken=next_page_token,
      )
      .execute()
  )

  # If response is not empty, display the retrieved assigned targeting
  # options line items.
  if response:
    for assigned_option in response.get(
        "lineItemAssignedTargetingOptions", []
    ):
      ato_name = assigned_option.get("assignedTargetingOption", {}).get(
          "name", None
      )
      if ato_name:
        print(f"Assigned Targeting Option {ato_name} found.")
  else:
    print(f"No targeting is currently assigned to {line_item_id}.")
    sys.exit(1)
  # Update the next page token.
  # Break out of loop if there is no next page.
  if "nextPageToken" in response:
    next_page_token = response["nextPageToken"]
  else:
    break

אחזור של טירגוט קיים של קבוצת מודעות

כדי להקצות את הטירגוט הקיים ישירות לקבוצת מודעות:

Python

# Provide the ID of the parent advertiser.
advertiser_id = advertiser-id

# Provide the ID of the ad group.
ad_group_id = ad-group-id

# Create the page token variable.
next_page_token = ""

while True:
  # Execute the list request.
  response = (
      service.advertisers()
      .adGroups()
      .bulkListAssignedTargetingOptions(
          advertiserId=advertiser_id,
          adGroupIds=[ad_group_id],
          pageToken=next_page_token,
      )
      .execute()
  )

  # If response is not empty, display the retrieved assigned targeting
  # options line items.
  if response:
    for assigned_option in response.get(
        "adGroupAssignedTargetingOptions", []
    ):
      ato_name = assigned_option.get("assignedTargetingOption", {}).get(
          "name", None
      )
      if ato_name:
        print(f"Assigned Targeting Option {ato_name} found.")
  else:
    print(f"No targeting is currently assigned to {ad_group_id}.")
    sys.exit(1)
  # Update the next page token.
  # Break out of loop if there is no next page.
  if "nextPageToken" in response:
    next_page_token = response["nextPageToken"]
  else:
    break

הקצאת טירגוט למשאבים

צריך לשלוח בקשות נפרדות כדי לעדכן את הטירגוט של פריט קו ושל קבוצת מודעות.

הקצאת טירגוט של פריט

כך מוסיפים את לוגיקת הטירגוט הבאה לפריט:

  • המודעות מוצגות רק במחשבים.
  • אל תגיש הצעות מחיר על מלאי שטחי פרסום שמוצג לצד תוכן שתואם למילת המפתח ice cream (גלידה).

Python

# Provide the ID of the parent advertiser.
advertiser_id = advertiser-id

# Provide the ID of the line item.
line_item_id = line-item-id

# Build the "ice cream" negative keyword assigned targeting option.
keyword_assigned_targeting_option = {
    "keywordDetails": {"keyword": "ice cream", "negative": True}
}

# Build the delete request for device type targeting to remove all device
# types to only target computers.
device_type_delete_request = {
    "targetingType": "TARGETING_TYPE_DEVICE_TYPE",
    "assignedTargetingOptionIds": [
        "DEVICE_TYPE_SMART_PHONE",
        "DEVICE_TYPE_CONNECTED_TV",
        "DEVICE_TYPE_TABLET"
    ],
}

# Create a bulk edit request.
bulk_edit_targeting_request = {
    "lineItemIds": [line_item_id],
    "createRequests": [
        {
            "targetingType": "TARGETING_TYPE_KEYWORD",
            "assignedTargetingOptions": [
                keyword_assigned_targeting_option
            ],
        }
    ],
    "deleteRequests": [
        device_type_delete_request
    ]
}

# Build and execute request.
response = (
    service.advertisers()
    .lineItems()
    .bulkEditAssignedTargetingOptions(
        advertiserId=advertiser_id, body=bulk_edit_targeting_request
    )
    .execute()
)

# Print the request results.
if (
    "updatedLineItemIds" in response
    and len(response["updatedLineItemIds"]) != 0
):
  print(
      f'Targeting configurations for {response["updatedLineItemIds"][0]} '
      "were successfully updated."
  )
elif (
    "failedLineItemIds" in response
    and len(response["failedLineItemIds"]) != 0
):
  print(
      f'Targeting configurations for {response["failedLineItemIds"][0]} '
      "failed to update."
  )
  if "errors" in response and len(response["errors"]) != 0:
    print("The failed updates were caused by the following errors:")
    for error in response["errors"]:
      print(f'Code {error["code"]}: {error["message"]}')
else:
  print("No successful or failed updates were reported.")

הקצאת טירגוט לקבוצת מודעות

כך מוסיפים לקבוצת מודעות את לוגיקת הטירגוט הבאה:

  • הצגת המידע להורים בלבד.
  • לא להציג מודעות בערוץ YouTube שצוין.

Python

# Provide the ID of the parent advertiser.
advertiser_id = advertiser-id

# Provide the ID of the ad group.
ad_group_id = ad-group-id

# Provide the YouTube channel ID to negatively target.
yt_channel_id = youtube-channel-id

# Build the assigned targeting option to negatively target the given YouTube
# channel.
youtube_channel_assigned_targeting_options = [
    {
        "youtubeChannelDetails": {
            "channelId": yt_channel_id,
            "negative": True
        }
    },
]

# Build the assigned targeting options to target only parents.
parental_status_assigned_targeting_options = [
    {
        "parentalStatusDetails": {
            "parentalStatus": "PARENTAL_STATUS_PARENT"
        }
    },
]

# Create a bulk edit request.
bulk_edit_targeting_request = {
    "adGroupIds": [ad_group_id],
    "createRequests": [
        {
            "targetingType": "TARGETING_TYPE_YOUTUBE_CHANNEL",
            "assignedTargetingOptions": (
                youtube_channel_assigned_targeting_options
            )
        },
        {
            "targetingType": "TARGETING_TYPE_PARENTAL_STATUS",
            "assignedTargetingOptions": (
                parental_status_assigned_targeting_options
            ),
        }
    ]
}

# Build and execute request.
response = (
    service.advertisers()
    .adGroups()
    .bulkEditAssignedTargetingOptions(
        advertiserId=advertiser_id, body=bulk_edit_targeting_request
    )
    .execute()
)

# Print the request results.
if (
    "updatedAdGroupIds" in response
    and len(response["updatedAdGroupIds"]) != 0
):
  print(
      f'Targeting configurations for {response["updatedAdGroupIds"][0]} '
      "were successfully updated."
  )
elif (
    "failedAdGroupIds" in response
    and len(response["failedAdGroupIds"]) != 0
):
  print(
      f'Targeting configurations for {response["failedAdGroupIds"][0]} '
      "failed to update."
  )
  if "errors" in response and len(response["errors"]) != 0:
    print("The failed updates were caused by the following errors:")
    for error in response["errors"]:
      print(f'Code {error["code"]}: {error["message"]}')
else:
  print("No successful or failed updates were reported.")