מיקוד

ניהול הטירגוט של מקורות מידע הוא תכונה מרכזית ב-Display & Video 360 API. אפשר להקצות טירגוט לכמה סוגים של משאבים, והוא משתמש במספר משאבים אחרים ובמרחבי מזהים. בדף הזה מפורטות מגבלות שכדאי לשים לב אליהן ושיטות מומלצות ליישום בשירותים של Display & Video 360 API Assigned Targeting Options.

שימוש בהעברת טירגוט בירושה

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

נתיב ההורשה מוצג בתרשים הבא:

תרשים של העברת טירגוט בירושה

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

הורשה במשאבים של YouTube ושותפים

העברת הגדרות טירגוט לא משתקפת במשאבים של YouTube והשותפים ב-Display & Video 360 API. אי אפשר לאחזר טירגוט שעובר בירושה לקבוצות של מודעות ברמה AdGroup, וטירגוט ב-YouTube שהוקצה למשאבי אב לא עובר בירושה למשאבי צאצא.

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

שימו לב לטירגוט שמוגדר כשיוצרים פריט

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

ניסיון ליצור אפשרויות טירגוט קיימות או למחוק אפשרויות טירגוט לא קיימות שמוקצות מחזיר שגיאה, ולכן מומלץ להכיר את חבילת הטירגוט המלאה שמוקצית לפריטי הקמפיין שלכם בזמן היצירה. אם אתם צריכים לאחזר את הטירגוט שהוקצה לפריט פרסום בכל סוגי הטירגוט, אתם יכולים להשתמש ב-advertisers.lineItems.bulkListAssignedTargetingOptions.

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

אי אפשר לשנות את הטירגוט של YouTube והשותפים

אי אפשר לעדכן טירגוט שמוגדר במיוחד לקמפיינים ב-YouTube ובאתרי השותפים באמצעות Display & Video 360 API.

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

  • TARGETING_TYPE_SESSION_POSITION
  • TARGETING_TYPE_YOUTUBE_CHANNEL
  • TARGETING_TYPE_YOUTUBE_VIDEO

אפשר לעדכן את הטירגוט הזה ישירות באמצעות ממשק המשתמש של Display & Video 360 או על ידי העלאת קובץ של נתונים מובנים.

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

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

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

דוגמה לעדכון של טירגוט לפי קהל כדי לטרגט באופן חיובי קהלים נוספים ב-Google:

Java

long advertiserId = advertiser-id;
long lineItemId = line-item-id
List<Long> addedGoogleAudienceIds =
    Arrays.asList(google-audience-id-to-add,...);

// Build Google audience targeting settings objects to add to audience
// targeting.
ArrayList<GoogleAudienceTargetingSetting> newGoogleAudienceSettings =
    new ArrayList<GoogleAudienceTargetingSetting>();

// Convert list of Google Audience IDs into list of settings.
for (Long googleAudienceId : addedGoogleAudienceIds) {
  newGoogleAudienceSettings.add(new GoogleAudienceTargetingSetting()
      .setGoogleAudienceId(googleAudienceId));
}

// Create relevant bulk edit request objects.
BulkEditLineItemAssignedTargetingOptionsRequest requestContent =
    new BulkEditLineItemAssignedTargetingOptionsRequest();
AudienceGroupAssignedTargetingOptionDetails updatedAudienceGroupDetails;
ArrayList<DeleteAssignedTargetingOptionsRequest> audienceGroupDeleteRequests =
    new ArrayList<DeleteAssignedTargetingOptionsRequest>();

try {
  // Retrieve existing audience group targeting.
  AssignedTargetingOption existingAudienceGroupTargetingOption =
      service
          .advertisers()
          .lineItems()
          .targetingTypes()
          .assignedTargetingOptions()
          .get(
              advertiserId,
              lineItemId,
              "TARGETING_TYPE_AUDIENCE_GROUP",
              "audienceGroup"
          ).execute();

  // Extract existing audience group targeting details.
  updatedAudienceGroupDetails =
      existingAudienceGroupTargetingOption.getAudienceGroupDetails();

  // Build and add delete request for existing audience group targeting.
  ArrayList<String> deleteAudienceGroupAssignedTargetingIds =
      new ArrayList<String>();
  deleteAudienceGroupAssignedTargetingIds.add("audienceGroup");

  audienceGroupDeleteRequests
      .add(new DeleteAssignedTargetingOptionsRequest()
          .setTargetingType("TARGETING_TYPE_AUDIENCE_GROUP")
          .setAssignedTargetingOptionIds(
              deleteAudienceGroupAssignedTargetingIds
          )
      );
}
catch (GoogleJsonResponseException e) {
  updatedAudienceGroupDetails =
      new AudienceGroupAssignedTargetingOptionDetails();
}

// Set delete requests in edit request.
requestContent.setDeleteRequests(audienceGroupDeleteRequests);

// Construct new group of Google Audiences to include in targeting.
GoogleAudienceGroup updatedIncludedGoogleAudienceGroup =
    updatedAudienceGroupDetails.getIncludedGoogleAudienceGroup();
if (updatedIncludedGoogleAudienceGroup != null) {
  List<GoogleAudienceTargetingSetting> updatedGoogleAudienceSettings =
      updatedIncludedGoogleAudienceGroup.getSettings();
  updatedGoogleAudienceSettings.addAll(newGoogleAudienceSettings);
  updatedIncludedGoogleAudienceGroup
      .setSettings(updatedGoogleAudienceSettings);
} else {
  updatedIncludedGoogleAudienceGroup = new GoogleAudienceGroup();
  updatedIncludedGoogleAudienceGroup.setSettings(newGoogleAudienceSettings);
}

// Add new Google Audience group to audience group targeting details.
updatedAudienceGroupDetails
    .setIncludedGoogleAudienceGroup(updatedIncludedGoogleAudienceGroup);

// Create new targeting option to assign.
AssignedTargetingOption newAudienceGroupTargeting =
    new AssignedTargetingOption();
newAudienceGroupTargeting
    .setAudienceGroupDetails(updatedAudienceGroupDetails);

// Build audience group targeting create request and add to list of create
// requests.
ArrayList<AssignedTargetingOption> createAudienceGroupAssignedTargetingOptions =
    new ArrayList<AssignedTargetingOption>();
createAudienceGroupAssignedTargetingOptions.add(newAudienceGroupTargeting);
ArrayList<CreateAssignedTargetingOptionsRequest> targetingCreateRequests =
    new ArrayList<CreateAssignedTargetingOptionsRequest>();
targetingCreateRequests.add(new CreateAssignedTargetingOptionsRequest()
    .setTargetingType("TARGETING_TYPE_AUDIENCE_GROUP")
    .setAssignedTargetingOptions(
        createAudienceGroupAssignedTargetingOptions
    )
);

// Set create requests in edit request.
requestContent.setCreateRequests(targetingCreateRequests);

// Configure and execute the bulk list request.
BulkEditLineItemAssignedTargetingOptionsResponse response =
    service.advertisers().lineItems()
        .bulkEditLineItemAssignedTargetingOptions(
            advertiserId,
            lineItemId,
            requestContent).execute();

Python

advertiser_id = advertiser-id
line_item_id = line-item-id
added_google_audiences = [google-audience-id-to-add,...]

# Build Google audience targeting settings objects to create.
new_google_audience_targeting_settings = []
for google_audience_id in added_google_audiences:
 new_google_audience_targeting_settings.append(
     {'googleAudienceId': google_audience_id}
 )

# Retrieve any existing line item audience targeting.
retrieved_audience_targeting = service.advertisers().lineItems(
).targetingTypes().assignedTargetingOptions().get(
   advertiserId=advertiser_id,
   lineItemId=line_item_id,
   targetingType="TARGETING_TYPE_AUDIENCE_GROUP",
   assignedTargetingOptionId="audienceGroup"
).execute()

updated_audience_group_details = {}

# Copy over any existing audience targeting.
if 'audienceGroupDetails' in retrieved_audience_targeting:
 updated_audience_group_details = retrieved_audience_targeting[
     'audienceGroupDetails']

# Append the new Google audience IDs to any existing positive Google
# audience targeting.
if 'includedGoogleAudienceGroup' in updated_audience_group_details:
 updated_audience_group_details[
     'includedGoogleAudienceGroup']['settings'].extend(
         new_google_audience_targeting_settings)
else:
 updated_audience_group_details['includedGoogleAudienceGroup'] = {
     'settings': new_google_audience_targeting_settings
 }

# Build bulk edit request.
bulk_edit_request = {
   'deleteRequests': [
       {
         'targetingType': "TARGETING_TYPE_AUDIENCE_GROUP",
         'assignedTargetingOptionIds': [
           "audienceGroup"
         ]
       }
   ],
   'createRequests': [
       {
           'targetingType': "TARGETING_TYPE_AUDIENCE_GROUP",
           'assignedTargetingOptions': [
               {'audienceGroupDetails': updated_audience_group_details}
           ]
       }
   ]
}

# Update the audience targeting
updated_audience_targeting = service.advertisers().lineItems(
).bulkEditLineItemAssignedTargetingOptions(
   advertiserId=advertiser_id,
   lineItemId=line_item_id,
   body=bulk_edit_request
).execute()

PHP

$advertiserId = advertiser-id;
$lineItemId = line-item-id;
$addedGoogleAudienceIds = array(google-audience-id-to-add,...);

// Convert list of Google Audience IDs into list of Google audience
// settings.
$newGoogleAudienceSettings = array();
foreach ($addedGoogleAudienceIds as $googleAudienceId) {
    $newSetting =
        new Google_Service_DisplayVideo_GoogleAudienceTargetingSetting();
    $newSetting->setGoogleAudienceId($googleAudienceId);
    $newGoogleAudienceSettings[] = $newSetting;
}

// Create a bulk edit request.
$requestBody =
    new Google_Service_DisplayVideo_BulkEditLineItemAssignedTargetingOptionsRequest();

$audienceGroupDeleteRequests = array();

try {
    // Retrieve existing audience group targeting.
    $existingAudienceGroupTargetingOption = $this
        ->service
        ->advertisers_lineItems_targetingTypes_assignedTargetingOptions
        ->get(
            $advertiserId,
            $lineItemId,
            'TARGETING_TYPE_AUDIENCE_GROUP',
            'audienceGroup'
        );

    // Extract existing audience group targeting details.
    $updatedAudienceGroupDetails =
        $existingAudienceGroupTargetingOption
            ->getAudienceGroupDetails();

    // Build and add delete request for existing audience group
    // targeting.
    $deleteAudienceGroupAssignedTargetingIds = array();
    $deleteAudienceGroupAssignedTargetingIds[] = "audienceGroup";

    $audienceGroupDeleteRequest =
        new Google_Service_DisplayVideo_DeleteAssignedTargetingOptionsRequest();
    $audienceGroupDeleteRequest
        ->setTargetingType('TARGETING_TYPE_AUDIENCE_GROUP');
    $audienceGroupDeleteRequest
        ->setAssignedTargetingOptionIds(
            $deleteAudienceGroupAssignedTargetingIds
        );
    $audienceGroupDeleteRequests[] = $audienceGroupDeleteRequest;
} catch (\Exception $e) {
    $updatedAudienceGroupDetails =
        new Google_Service_DisplayVideo_AudienceGroupAssignedTargetingOptionDetails();
}

// Set delete requests in edit request.
$requestBody->setDeleteRequests($audienceGroupDeleteRequests);

// Construct new group of Google audiences to include in targeting.
$updatedIncludedGoogleAudienceGroup = $updatedAudienceGroupDetails
    ->getIncludedGoogleAudienceGroup();

if (!empty($updatedIncludedGoogleAudienceGroup)) {
    // Get existing settings.
    $updatedGoogleAudienceSettings =
    $updatedIncludedGoogleAudienceGroup->getSettings();

    // Add new Google audiences to existing list.
    $updatedGoogleAudienceSettings = array_merge(
        $updatedGoogleAudienceSettings,
        $newGoogleAudienceSettings
    );

    // Set updated Google audience list.
    $updatedIncludedGoogleAudienceGroup
        ->setSettings($updatedGoogleAudienceSettings);
} else {
    // Create new Google audience group.
    $updatedIncludedGoogleAudienceGroup =
        new Google_Service_DisplayVideo_GoogleAudienceGroup();

    // Set list of new Google audiences for targeting.
    $updatedIncludedGoogleAudienceGroup
        ->setSettings($newGoogleAudienceSettings);
}

// Add new Google Audience group to audience group targeting details.
$updatedAudienceGroupDetails
    ->setIncludedGoogleAudienceGroup(
        $updatedIncludedGoogleAudienceGroup
    );

// Create new targeting option to assign.
$newAudienceGroupTargeting =
    new Google_Service_DisplayVideo_AssignedTargetingOption();
$newAudienceGroupTargeting
    ->setAudienceGroupDetails($updatedAudienceGroupDetails);

// Build audience group targeting create request and add to list of
// create requests.
$createAudienceGroupAssignedTargetingOptions = array();
$createAudienceGroupAssignedTargetingOptions[] =
    $newAudienceGroupTargeting;
$createAudienceGroupTargetingRequest =
    new Google_Service_DisplayVideo_CreateAssignedTargetingOptionsRequest();
$createAudienceGroupTargetingRequest->setTargetingType(
    "TARGETING_TYPE_AUDIENCE_GROUP"
);
$createAudienceGroupTargetingRequest->setAssignedTargetingOptions(
    $createAudienceGroupAssignedTargetingOptions
);
$createRequests[] = $createAudienceGroupTargetingRequest;

// Set create requests in edit request.
$requestBody->setCreateRequests($createRequests);

// Call the API, editing the assigned targeting options for the
// identified line item.
$response = $this
    ->service
    ->advertisers_lineItems
    ->bulkEditLineItemAssignedTargetingOptions(
        $advertiserId,
        $lineItemId,
        $requestBody
    );

היערכות להוצאה משימוש של אפשרויות טירגוט

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

כדי להימנע מהשגיאות האלה, מומלץ לבדוק באופן קבוע את מזהי אפשרויות הטירגוט השמורים. כדי לחסוך במכסת השימוש, מומלץ לשמור במטמון מזהים שנמצאים בשימוש קבוע. עם זאת, אחסון מזהים עלול לגרום לכך שלא תשימו לב שאפשרות טירגוט מסוימת הוצאה משימוש. לכן, מומלץ להשתמש באופן קבוע ב-targetingOptions.targetingTypes.get כדי לאחזר את כל מזהי אפשרויות הטירגוט שמאוחסנים, ולוודא שהם עדיין נתמכים ב-Display & Video 360.

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

אל תשלחו בקשות בו-זמניות לעדכון אותו פריט

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

אם אתם צריכים להוסיף או להסיר כמה אפשרויות טירגוט שהוקצו לפריט בודד בו-זמנית, אתם צריכים להשתמש בבקשה אחת של advertisers.lineItems.bulkEditAssignedTargetingOptions. אם רוצים לעדכן את ההגדרות והטירגוט של פריט פרסום, צריך להוסיף לתור את הבקשה patch או bulkUpdate ואת בקשת הטירגוט הרלוונטית, כדי לוודא שהבקשה השנייה לא תישלח עד שהבקשה הראשונה תחזיר תשובה.