هدف گذاری

مدیریت هدف‌گذاری منابع یکی از ویژگی‌های اصلی Display & Video 360 API است. هدف‌گذاری می‌تواند به چندین نوع منبع اختصاص داده شود و از تعدادی منابع و فضاهای شناسه دیگر استفاده کند. این صفحه محدودیت‌هایی را که باید به آنها توجه کنید و بهترین شیوه‌ها را برای پیاده‌سازی در هنگام استفاده از خدمات Display & Video 360 API Assigned Targeting Options شرح می‌دهد.

استفاده از وراثت هدفمند

هدف‌گیری اختصاص داده شده به برخی منابع می‌تواند توسط منابع فرزند آنها به ارث برده شود. گزینه‌های هدف‌گیری که توسط یک منبع فرزند به ارث رسیده‌اند، قابل بازیابی هستند اما در سطح منبع فرزند قابل ویرایش نیستند. این امر امکان اعمال تنظیمات ایمنی برند و سایر هدف‌گیری‌ها را در کل یک شریک یا تبلیغ‌کننده فراهم می‌کند.

مسیر وراثت را می‌توانید در نمودار زیر مشاهده کنید:

نمودار وراثت هدفمند

همانطور که در نمودار مشخص شده است، برخی از سطوح هدف‌گذاری فقط از زیرمجموعه‌ای از انواع هدف‌گذاری پشتیبانی می‌کنند. این بدان معناست که برخی از گزینه‌های هدف‌گذاری را نمی‌توان در سطوح بالاتر تنظیم و به ارث برد، بلکه باید در سطح پایین‌تری تنظیم شوند.

وراثت در منابع یوتیوب و شرکا

وراثت هدف‌گیری برای منابع YouTube & Partners در Display & Video 360 API منعکس نشده است. هدف‌گیری به ارث رسیده توسط گروه‌های تبلیغاتی در سطح AdGroup قابل بازیابی نخواهد بود و هدف‌گیری YouTube اختصاص داده شده به منابع والد توسط منابع فرزند به ارث برده نمی‌شود.

برای بازیابی تمام تنظیمات هدف‌گیری عملکردی برای یک گروه تبلیغاتی، باید گزینه‌های هدف‌گیری اختصاص داده شده برای گروه تبلیغاتی ، آیتم خط والد و تبلیغ‌کننده والد را بازیابی کنید.

از هدف‌گذاری تعیین‌شده در زمان ایجاد آیتم‌های خطی آگاه باشید

به غیر از گزینه‌های هدف‌گیری ارثی، اکثر هدف‌گیری‌ها را فقط می‌توان پس از ایجاد یک ردیف آیتم اختصاص داد. با این حال، چند نوع هدف‌گیری وجود دارد که زیرمجموعه‌ای از مقادیر پیش‌فرض را در زمان ایجاد ردیف آیتم به آنها اختصاص می‌دهند. این انواع هدف‌گیری عبارتند از:

تلاش برای ایجاد گزینه‌های هدف‌گیری اختصاص داده شده موجود یا حذف گزینه‌های هدف‌گیری ناموجود، خطا برمی‌گرداند، بنابراین توصیه می‌کنیم از مجموعه کامل هدف‌گیری که هنگام ایجاد به آیتم‌های خطی شما اختصاص داده شده است، آگاه باشید. اگر نیاز دارید هدف‌گیری اختصاص داده شده به یک آیتم خطی را در بین انواع هدف‌گیری بازیابی کنید، advertisers.lineItems.bulkListAssignedTargetingOptions استفاده کنید.

علاوه بر این، برخی تنظیمات به طور پیش‌فرض تنظیم می‌شوند زمانی که هیچ گزینه هدف‌گیری از آن نوع به منبع اختصاص داده نشده باشد. برای مثال، اگر برای منبعی گزینه هدف‌گیری TARGETING_TYPE_AUTHORIZED_SELLER_STATUS تعریف نشده باشد، به این معنی است که از وضعیت "فروشندگان و نمایندگان فروش مستقیم مجاز" استفاده می‌کند.

هدف‌گذاری یوتیوب و شرکا قابل تغییر نیست

هدف‌گذاری ویژه برای کمپین‌های یوتیوب و شرکا را نمی‌توان با استفاده از Display & Video 360 API به‌روزرسانی کرد.

هدف‌گیری یوتیوب و شرکا شامل تمام هدف‌گیری‌هایی است که مستقیماً به آیتم‌های خطی و گروه‌های تبلیغاتی یوتیوب و شرکا اختصاص داده شده‌اند، و همچنین هرگونه هدف‌گیری از انواع هدف‌گیری زیر:

  • TARGETING_TYPE_SESSION_POSITION
  • TARGETING_TYPE_YOUTUBE_CHANNEL
  • TARGETING_TYPE_YOUTUBE_VIDEO

این هدف‌گیری را می‌توان مستقیماً با استفاده از رابط کاربری Display & Video 360 یا با آپلود یک فایل داده ساختاریافته به‌روزرسانی کرد.

هدف‌گیری مخاطبان را با یک گزینه واحد تعیین کنید

گزینه‌های هدف‌گیری برای اکثر انواع هدف‌گیری به صورت جداگانه تعیین می‌شوند. هدف‌گیری گروه مخاطب از این قرارداد ماژولار پیروی نمی‌کند، بلکه در یک شیء جزئیات هدف‌گیری گروه مخاطب قابل تنظیم و واحد تعیین می‌شود که شناسه‌های مخاطبان را برای گنجاندن و حذف کردن هنگام نمایش تبلیغات فهرست می‌کند. assignedTargetingOptionId برای این گزینه گروه مخاطب، پس از تعیین، همیشه "audienceGroup" است.

این طراحی به این معنی است که هرگونه تغییر در هدف‌گیری گروه مخاطبان باید ابتدا با حذف گزینه هدف‌گیری اختصاص داده شده به گروه مخاطبان موجود و سپس ایجاد یک گزینه هدف‌گیری گروه مخاطبان جدید با تغییرات مورد نظر انجام شود. این کار را می‌توان در یک درخواست واحد با استفاده از advertisers.lineItems.bulkEditAssignedTargetingOptions انجام داد.

در اینجا مثالی از نحوه به‌روزرسانی هدف‌گیری مخاطبان به منظور هدف‌گیری مثبت مخاطبان بیشتر گوگل آورده شده است:

جاوا

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();

پایتون

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()

پی اچ پی

$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 و درخواست هدف‌گیری مرتبط را در صف قرار دهید تا مطمئن شوید که درخواست دوم تا زمانی که درخواست اول پاسخی نداده است، ارسال نمی‌شود.