هدف گذاری را تنظیم کنید

سرویس‌های گزینه‌های هدف ، گزینه‌های هدف تعیین‌شده ، و آیتم‌های خط همگی به‌همراه برای تنظیم هدف‌گذاری مورد خط در Display & Video 360 API استفاده می‌شوند. این صفحه نمونه‌هایی از نحوه یافتن گزینه‌های هدف‌یابی در دسترس، اختصاص دادن گزینه‌های هدف‌یابی به موارد خط، و اجرای عملیات انبوه بر روی آیتم‌های خط برای فهرست کردن و ویرایش گزینه‌های هدف اختصاص‌یافته را شرح می‌دهد.

گزینه های هدف گذاری موجود را پیدا کنید

گزینه های هدف از متغیرهای مشخص شده توسط کاربر، موجودیت های قابل هدف موجود یا گزینه های از قبل موجود برای تعریف مخاطب هدف مورد نظر استفاده می کنند. بسته به نوع هدف، گزینه‌های از قبل موجود با استفاده از مقادیر enum یا شناسه‌های گزینه هدف شناسایی می‌شوند. موجودیت های قابل هدف با استفاده از شناسه موجودیت خود شناسایی می شوند. شناسه‌های گزینه‌های هدف و شناسه‌های نهاد را می‌توان با استفاده از Display & Video 360 API پیدا کرد.

از مقادیر set enum استفاده کنید

گزینه های هدف برای انواع هدف زیر با استفاده از انواع enum خاص اختصاص داده می شود:

TargetingType Enum
TARGETING_TYPE_AGE_RANGE AgeRange
TARGETING_TYPE_CONTENT_INSTREAM_POSITION ContentInstreamPosition
TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION ContentOutstreamPosition
TARGETING_TYPE_DEVICE_TYPE DeviceType
TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION ContentRatingTier
TARGETING_TYPE_ENVIRONMENT Environment
TARGETING_TYPE_EXCHANGE Exchange
TARGETING_TYPE_GENDER Gender
TARGETING_TYPE_HOUSEHOLD_INCOME HouseholdIncome
TARGETING_TYPE_NATIVE_CONTENT_POSITION NativeContentPosition
TARGETING_TYPE_OMID Omid
TARGETING_TYPE_PARENTAL_STATUS ParentalStatus
TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION SensitiveCategory
TARGETING_TYPE_VIDEO_PLAYER_SIZE VideoPlayerSize
TARGETING_TYPE_VIEWABILITY Viewability

یک نسخه رشته ای از مقدار enum مربوطه می تواند برای شناسایی منابع AssignedTargetingOption موجود از این انواع هدف استفاده شود و در قسمت assignedTargetingOptionIdAlias ​​موجود است. هنگام بازیابی یا حذف گزینه های هدف اختصاص داده شده، می توانید از این مقدار مستعار به جای assignedTargetingOptionId استفاده کنید.

شناسه های گزینه هدف را بازیابی کنید

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

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

این شناسه های گزینه هدف را می توان از طریق سرویس گزینه های هدف بازیابی کرد. بسته به نوع هدف، بازیابی به یکی از دو روش انجام می شود:

  • بازیابی فردی یا فهرست جامع : بازیابی گزینه ها برای اکثر انواع هدف می تواند با استفاده از روش های get و list انجام شود. از targetingTypes.targetingOptions.get برای بازیابی جزئیات یک گزینه هدف شناسایی شده توسط نوع هدف و شناسه گزینه هدف استفاده کنید. از targetingTypes.targetingOptions.list برای فهرست کردن همه گزینه های هدف در دسترس از یک نوع هدف گذاری معین استفاده کنید.
  • جستجو : گزینه‌های انواع هدف‌گیری مبتنی بر مکان ( TARGETING_TYPE_GEO_REGION ، TARGETING_TYPE_POI و TARGETING_TYPE_BUSINESS_CHAIN ) باید با استفاده از روش search بازیابی شوند. از targetingTypes.targetingOptions.search برای بازیابی گزینه های هدف گیری از یک نوع مشخص که با رشته های پرس و جو مطابقت دارند، استفاده کنید.

در اینجا مثالی از نحوه بازیابی لیستی از گزینه های هدف گیری احتمالی برای نوع هدف گیری TARGETING_TYPE_BROWSER آورده شده است:

جاوا

// Configure the list request.
TargetingOptions.List request =
   service
       .targetingTypes()
       .targetingOptions()
       .list("TARGETING_TYPE_BROWSER")
       .setAdvertiserId(advertiser-id);

// Create the response and nextPageToken variables.
ListTargetingOptionsResponse response;
String nextPageToken = null;

do {
 // Create and execute the list request.
 response = request.setPageToken(nextPageToken).execute();

 // Check if the response is empty.
 if (response.isEmpty()) {
   System.out.print("List request returned no Targeting Options");
   break;
 }

 // Iterate over retrieved targeting options.
 for (TargetingOption option : response.getTargetingOptions()) {
   System.out.printf(
       "Targeting Option ID: %s, Browser Display Name: '%s'\n",
       option.getTargetingOptionId(), option.getBrowserDetails().getDisplayName());
 }

 // Update the next page token.
 nextPageToken = response.getNextPageToken();
} while (!Strings.isNullOrEmpty(nextPageToken));

پایتون

# Create the page token variable.
next_page_token = ""

while True:
  # Request the targeting options list.
  response = service.targetingTypes() \
    .targetingOptions().list(
      advertiserId=advertiser-id,
      targetingType="TARGETING_TYPE_BROWSER",
      pageToken=next_page_token
  ).execute()

  # Check if response is empty.
  if not response:
    print("List request returned no Targeting Options")
    break

  # Iterate over retrieved targeting options.
  for option in response['targetingOptions']:
    print("Targeting Option ID: %s, Browser Display Name: %s"
          % (option['targetingOptionId'], option['browserDetails']['displayName']))

  # Break out of loop if there is no next page.
  if 'nextPageToken' not in response:
    break

  # Update the next page token.
  next_page_token = response['nextPageToken']

PHP

// Create the page token variable.
$nextPageToken = null;

do {
    // Build the query parameters object for the request.
    $optParams = array(
        'advertiserId' => advertiser-id,
        'pageToken' => $nextPageToken
    );

    // Call the API, getting the browser targeting options for the
    // identified advertiser.
    $response = $this
        ->service
        ->targetingTypes_targetingOptions
        ->listTargetingTypesTargetingOptions(
            'TARGETING_TYPE_BROWSER',
            $optParams
        );

    // Print the resulting targeting options.
    if (!empty($response->getTargetingOptions())) {
        foreach ($response->getTargetingOptions() as $option) {
            printf(
                'Targeting Option ID: %s, Browser Display Name: %s\n',
                $option['targetingOptionId'],
                $option['browserDetails']['displayName']
            );
        }
    } else {
        print('No targeting options returned\n');
    }

    // Update the next page token.
    $nextPageToken = $response->getNextPageToken();
} while (
    !empty($response->getTargetingOptions())
    && $nextPageToken
);

نهادهای قابل هدف را فهرست کنید

برای هدف قرار دادن یک آیتم خط با استفاده از یک موجود قابل هدف موجود، به شناسه آن موجودیت نیاز دارید. نهادهای قابل هدف، مانند کانال‌ها ، مخاطبان ترکیبی ، و گروه‌های منبع موجودی ، از طریق سرویس‌های خود در Display & Video 360 API قابل بازیابی هستند.

هر سرویس متدهای get و list مخصوص به خود را دارد. از روش get برای تأیید اینکه یک موجودیت تحت یک تبلیغ کننده خاص در دسترس است استفاده کنید. از روش list برای کشف همه موجودیت‌هایی از آن نوع منبع استفاده کنید که در دسترس یک تبلیغ‌کننده خاص هستند و بنابراین، می‌توانند در اختصاص دادن هدف به یک آیتم خطی تحت آن تبلیغ‌کننده استفاده شوند.

زیرمجموعه ای از موجودیت های قابل هدف را نیز می توان از طریق API مدیریت کرد. این کار از طریق روش‌های create و patch در سرویس مربوطه، و همچنین سرویس‌هایی برای مقادیر فردی فهرست‌شده در موجودی‌ها، مانند منابع موجودی ، کلمات کلیدی منفی و مکان‌ها انجام می‌شود.

شناسه های گزینه هدف گذاری POI بسازید

با استفاده از targetingTypes.targetingOptions.search می‌توان نقاط مورد علاقه را در زیر TARGETING_TYPE_POI بازیابی کرد. علاوه بر این، می‌توانید شناسه‌های گزینه هدف‌گیری سفارشی TARGETING_TYPE_POI را برای هدف قرار دادن مختصات طول و عرض جغرافیایی خاص بسازید.

این مراحل را برای ایجاد شناسه گزینه هدف گذاری POI دنبال کنید:

  1. بازیابی مختصات طول و عرض جغرافیایی (به عنوان مثال: "40.7414691، -74.003387")
  2. مقادیر مختصات را تا ششمین رقم اعشار گرد کنید (مثلاً: "40.741469، -74.003387")
  3. اعداد اعشار را از مقادیر مختصات حذف کنید (مثلاً "40741469، -74003387")
  4. دو مقدار را به هم الحاق کنید تا یک رشته واحد بسازید که با یک نقطه ویرگول از هم جدا شده اند (مثلا: "40741469;-74003387")

رشته به دست آمده را می توان به عنوان targetingOptionId هنگام ایجاد یک گزینه هدف گذاری اختصاص داده شده به TARGETING_TYPE_POI استفاده کرد.

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

یک گزینه هدف گذاری اختصاص دهید

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

از advertisers.lineItems.targetingTypes.assignedTargetingOptions.create برای ایجاد گزینه های هدف اختصاص داده شده استفاده کنید. پارامترهای هدف را در قسمت details منبع گزینه هدف گذاری اختصاص داده شده که با نوع هدف گذاری مورد نظر مطابقت دارد، مشخص کنید.

در اینجا مثالی از نحوه ایجاد یک گزینه هدف گذاری اختصاص داده شده از نوع هدف گیری TARGETING_TYPE_BROWSER آورده شده است:

جاوا

// Create an AssignedTargetingOption object of the
// browser targeting type.
AssignedTargetingOption assignedTargetingOption =
   new AssignedTargetingOption()
       .setBrowserDetails(
           new BrowserAssignedTargetingOptionDetails()
               .setTargetingOptionId(targeting-option-id));

// Configure the create request.
AssignedTargetingOptions.Create request =
   service
       .advertisers()
       .lineItems()
       .targetingTypes()
       .assignedTargetingOptions()
       .create(
           advertiser-id,
           line-item-id,
           "TARGETING_TYPE_BROWSER",
           assignedTargetingOption);

// Send the request.
AssignedTargetingOption response = request.execute();

// Display the new assigned targeting option.
System.out.printf("AssignedTargetingOption %s was created.",
   response.getName());

پایتون

# Create a assigned targeting option object.
assigned_targeting_option_obj = {
    'browserDetails': {
        'targetingOptionId': targeting-option-id
    }
}

# Create the assigned targeting option.
assigned_targeting_option = service.advertisers().lineItems()\
  .targetingTypes().assignedTargetingOptions().create(
    advertiserId=advertiser-id,
    lineItemId=line-item-id,
    targetingType="TARGETING_TYPE_BROWSER",
    body=assigned_targeting_option_obj
).execute()

# Display the new assigned targeting option.
print("Assigned Targeting Option %s was created."
      % assigned_targeting_option["name"])

PHP

// Create a assigned targeting option object.
$assignedTargetingOption =
    new Google_Service_DisplayVideo_AssignedTargetingOption();

// Create and set browser details.
$details =
    new Google_Service_DisplayVideo_BrowserAssignedTargetingOptionDetails();
$details->setTargetingOptionId(targeting-option-id);
$assignedTargetingOption->setBrowserDetails($details);

// Call the API, creating the browser assigned targeting option for the
// given line item.
$result = $this
    ->service
    ->advertisers_lineItems_targetingTypes_assignedTargetingOptions
    ->create(
        advertiser-id,
        line-item-id,
        'TARGETING_TYPE_BROWSER',
        $assignedTargetingOption
    );

printf(
    'Assigned Targeting Option %s was created.\n',
    $result['name']
);

خطاها

خطاهای پیکربندی هدف گذاری

تعدادی از قوانین پیچیده در مورد هدف‌یابی در Display & Video 360 وجود دارد. این قوانین در Display & Video 360 API از طریق خطاهایی که هنگام ایجاد گزینه هدف‌گذاری اختصاص داده شده بازگردانده می‌شوند، اعمال می‌شوند. خطای بازگردانده شده توسط API، نقض را مشخص می کند.

خطاها عمدتاً به دلیل هدف گذاری موجود اختصاص داده شده به یک آیتم خط ایجاد می شوند. از advertisers.lineItems.targetingTypes.assignedTargetingOptions.list برای بازیابی همه گزینه های هدف از یک نوع هدف معین اختصاص داده شده به یک آیتم خط، ارزیابی اینکه آیا هدف گذاری مورد نظر با توجه به محدودیت ها امکان پذیر است یا خیر، و از advertisers.lineItems.targetingTypes.assignedTargetingOptions.delete برای حذف استفاده کنید. هر گونه هدف گیری ناخواسته قبل از تلاش مجدد برای ایجاد گزینه هدف گذاری اختصاص داده شده مورد نظر.

خطاهای هدف گیری YouTube و شرکا

هدف‌یابی به‌طور خاص برای کمپین‌های YouTube و Partners را نمی‌توان با استفاده از Display & Video 360 API به‌روزرسانی کرد و تلاش برای انجام این کار منجر به خطا می‌شود.

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

  • TARGETING_TYPE_SESSION_POSITION
  • TARGETING_TYPE_YOUTUBE_CHANNEL
  • TARGETING_TYPE_YOUTUBE_VIDEO

خطاهای همزمانی

تلاش برای به روز رسانی تنظیمات یا هدف گذاری یک مورد خط واحد از طریق چندین درخواست همزمان منجر به خطا می شود.

اگر لازم است چندین گزینه هدف گذاری اختصاص داده شده را برای یک مورد خطی به طور همزمان اضافه یا حذف کنید، باید از درخواست ویرایش انبوه استفاده کنید. اگر می‌خواهید تنظیمات و هدف‌گذاری یک مورد خطی را به‌روزرسانی کنید، درخواست advertisers.lineItems.patch و درخواست هدف‌یابی مربوطه را به‌طور متوالی انجام دهید تا مطمئن شوید درخواست دوم تا زمانی که درخواست اول پاسخی را ارسال نکند، ارسال نمی‌شود.

عملیات هدف گیری انبوه و گسترده منابع

می‌توانید از روش‌های هدف‌یابی انبوه و گسترده برای مدیریت گزینه‌های هدف‌یابی اختصاص داده شده در انواع هدف‌گیری استفاده کنید:

  • از روش‌های هدف‌یابی انبوه برای بازیابی یا ویرایش گزینه‌های هدف‌گیری در چندین نوع هدف و تحت منابع متعدد استفاده کنید. می‌توانید پیکربندی‌های هدف‌یابی کامل چندین مورد خط را با استفاده از advertisers.lineItems.bulkListAssignedTargetingOptions بازیابی کنید یا با استفاده از advertisers.lineItems.bulkEditAssignedTargetingOptions ، به‌روزرسانی‌های یکسانی را برای هدف‌یابی در چندین مورد خط انجام دهید. اینها فقط در سرویس advertisers.lineItems در دسترس هستند.
  • برای بازیابی یا ویرایش گزینه های هدف گیری در چندین نوع هدف تحت یک منبع واحد از روش های هدف گذاری گسترده منابع استفاده کنید. اینها در سرویس‌های partners ، advertisers ، advertisers.campaigns و advertisers.insertionOrders در دسترس هستند و listAssignedTargetingOptions یا editAssignedTargetingOptions نامیده می‌شوند.

اگر می خواهید نمای کاملی از هدف گذاری فعلی یک آیتم خط داشته باشید، می خواهید یک پیکربندی هدف گذاری از پیش تعیین شده را برای یک آیتم خط اعمال کنید، یا نیاز به ایجاد چندین تغییر در هدف گذاری یک آیتم خطی به طور همزمان دارید، از این روش های هدف گذاری استفاده کنید.

لیست هدف گذاری به صورت انبوه

advertisers.lineItems.bulkListAssignedTargetingOptions راهی را برای مشاهده تمام هدف گذاری های اختصاص داده شده به یک یا چند مورد خط در انواع مختلف هدف ارائه می دهد. این روش مشابه هر روش list دیگری عمل می کند. می توانید از پارامتر query filter برای فیلتر کردن نتایج بر اساس TargetingType یا Inheritance استفاده کنید.

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

جاوا

// Configure the bulk list request.
LineItems.BulkListAssignedTargetingOptions request =
    service.advertisers().lineItems()
        .bulkListAssignedTargetingOptions(advertiser-id);

// Set Line Items to retrieve targeting for.
request.setLineItemIds(line-item-ids);

// Set filter to only return inherited assigned targeting options.
request.setFilter(
    "inheritance=\"INHERITED_FROM_ADVERTISER\" OR inheritance=\"INHERITED_FROM_PARTNER\"");

// Create the response and nextPageToken variables.
BulkListAssignedTargetingOptionsResponse response;
String nextPageToken = null;

do {
  // Set page token and execute the list request.
  response = request.setPageToken(nextPageToken).execute();

  // Check if the response is empty.
  if (response.isEmpty()) {
    System.out.print("Bulk list request returned no Assigned Targeting Options");
    break;
  }

  // Iterate over retrieved line item assigned targeting option wrapper objects.
  for (LineItemAssignedTargetingOption lineItemAssignedTargetingOption
      : response.getLineItemAssignedTargetingOptions()) {
    System.out.printf(
        "Assigned Targeting Option %s found\n",
        lineItemAssignedTargetingOption.getAssignedTargetingOption().getName());
  }

  // Update the next page token.
  nextPageToken = response.getNextPageToken();
} while (!Strings.isNullOrEmpty(nextPageToken));

پایتون

# 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-ids,
      filter="inheritance=\"INHERITED_FROM_ADVERTISER\" OR "
             "inheritance=\"INHERITED_FROM_PARTNER\"",
      pageToken=next_page_token
  ).execute()

  # Check if response is empty.
  if not response:
    print("Bulk list request returned no Assigned Targeting Options")
    break

  # Iterate over retrieved assigned targeting options.
  for lineItemAssignedTargetingOption in response['lineItemAssignedTargetingOptions']:
    print("Assigned Targeting Option %s found"
          % (lineItemAssignedTargetingOption['assignedTargetingOption']['name']))

  # Break out of loop if there is no next page.
  if 'nextPageToken' not in response:
    break

  # Update the next page token.
  next_page_token = response['nextPageToken']

PHP

// Create the page token variable.
$nextPageToken = null;

do {
    // Build the query parameters object for the request.
    $optParams = array(
        'lineItemIds' => line-item-ids,
        'filter' => "inheritance=\"INHERITED_FROM_ADVERTISER\" OR "
            . "inheritance=\"INHERITED_FROM_PARTNER\"",
        'pageToken' => $nextPageToken
    );

    // Call the API, getting all the assigned targeting options for the
    // identified line item.
    $response = $service
        ->advertisers_lineItems
        ->bulkListAssignedTargetingOptions(
            advertiser-id,
            $optParams
    );

    // Print the returned assigned targeting options.
    if (!empty($response->getLineItemAssignedTargetingOptions())) {
        foreach ($response->getLineItemAssignedTargetingOptions() as $option) {
            printf('Assigned Targeting Option %s found\n', $option->getAssignedTargetingOption()['name']);
        }
    } else {
        print('No targeting options returned\n');
    }

    // Update the next page token.
    $nextPageToken = $response->getNextPageToken();
} while (
    !empty($response->getLineItemAssignedTargetingOptions())
    && $nextPageToken);

هدف گذاری را به صورت انبوه ویرایش کنید

advertisers.lineItems.bulkEditAssignedTargetingOptions راهی برای افزودن و حذف چندین گزینه هدف گیری از انواع مختلف هدف از یک یا چند مورد خط به طور همزمان فراهم می کند.

این روش فهرستی از DeleteAssignedTargetingOptionsRequests و فهرستی از CreateAssignedTargetingOptionsRequests را می گیرد. یک شی درخواست واحد می تواند نشان دهنده حذف یا ایجاد چندین گزینه هدف گذاری اختصاص داده شده از یک نوع هدف باشد.

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

در اینجا نمونه‌ای از نحوه ویرایش انبوه گزینه‌های هدف تعیین‌شده برای یک یا چند مورد خط با فهرستی از گزینه‌های هدف اختصاص‌یافته برای حذف و گزینه‌های هدف‌یابی برای ایجاد آمده است:

جاوا

// Create a bulk edit request.
BulkEditAssignedTargetingOptionsRequest requestContent =
    new BulkEditAssignedTargetingOptionsRequest();

// Set line item IDs in edit request.
requestContent.setLineItemIds(line-item-ids);

// Build delete request list.
ArrayList<DeleteAssignedTargetingOptionsRequest> deleteRequests =
    new ArrayList<DeleteAssignedTargetingOptionsRequest>();

// Add browser assigned targeting option IDs to delete request list.
deleteRequests.add(new DeleteAssignedTargetingOptionsRequest()
    .setTargetingType("TARGETING_TYPE_BROWSER")
    .setAssignedTargetingOptionIds(delete-browser-assigned-targeting-ids));

// Add device make or model assigned targeting option IDs to delete request list.
deleteRequests.add(new DeleteAssignedTargetingOptionsRequest()
    .setTargetingType("TARGETING_TYPE_DEVICE_MAKE_MODEL")
    .setAssignedTargetingOptionIds(
        delete-device-make-model-assigned-targeting-ids));

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

// Build create request list.
ArrayList<CreateAssignedTargetingOptionsRequest> createRequests =
    new ArrayList<CreateAssignedTargetingOptionsRequest>();

// Create browser assigned targeting option create request.
CreateAssignedTargetingOptionsRequest createBrowserTargetingRequest =
    new CreateAssignedTargetingOptionsRequest();
createBrowserTargetingRequest.setTargetingType("TARGETING_TYPE_BROWSER");

// Create and set list of browser assigned targeting options.
ArrayList<AssignedTargetingOption> createBrowserAssignedTargetingOptions =
    new ArrayList<AssignedTargetingOption>();
for (String targetingOptionId : create-browser-assigned-targeting-ids) {
  createBrowserAssignedTargetingOptions.add(new AssignedTargetingOption()
      .setBrowserDetails(
          new BrowserAssignedTargetingOptionDetails()
              .setTargetingOptionId(targetingOptionId)));
}
createBrowserTargetingRequest
    .setAssignedTargetingOptions(createBrowserAssignedTargetingOptions);

// Add browser assigned targeting options to list of create requests.
createRequests.add(createBrowserTargetingRequest);

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

// Configure the bulk edit request.
LineItems.BulkEditAssignedTargetingOptions request =
    service.advertisers().lineItems()
        .bulkEditAssignedTargetingOptions(
            advertiser-id,
            requestContent);

// Execute bulk edit request.
BulkEditAssignedTargetingOptionsResponse response = request.execute();

// Check if any line items updated successfully.
if (response.getUpdatedLineItemIds() == null || response.getUpdatedLineItemIds().isEmpty()) {
  System.out.println("No line items were updated successfully.");
} else {
  System.out.printf(
      "Targeting configurations for the following line item IDs were updated: %s.\n",
      Arrays.toString(response.getUpdatedLineItemIds().toArray()));
}

// Check if any line items failed to update.
if (response.getFailedLineItemIds() == null || response.getFailedLineItemIds().isEmpty()) {
  System.out.println("No line items failed to update.");
} else {
  // Print the line items that failed to update.
  System.out.printf(
      "Targeting configurations for the following line item IDs failed to update: %s.\n",
      Arrays.toString(response.getFailedLineItemIds().toArray()));

  // Print errors thrown for failed updates.
  System.out.println("The failed updates were caused by the following errors:");
  for (Status error : response.getErrors()) {
    System.out.printf("Error Code: %s, Message: %s\n", error.getCode(), error.getMessage());
  }
}

پایتون

# Build assigned targeting option objects to create.
createBrowserAssignedTargetingOptions = []
for targeting_id in create-browser-assigned-targeting-ids:
  createBrowserAssignedTargetingOptions.append(
      {'browserDetails': {'targetingOptionId': targeting_id}}
  )

# Create a bulk edit request.
bulk_edit_line_item_request = {
    'lineItemIds': line-item-ids,
    'deleteRequests': [
        {
            'targetingType': 'TARGETING_TYPE_BROWSER',
            'assignedTargetingOptionIds':
              delete-browser-assigned-targeting-ids
        },
        {
            'targetingType': 'TARGETING_TYPE_DEVICE_MAKE_MODEL',
            'assignedTargetingOptionIds':
              delete-device-make-model-assigned-targeting-ids
        }
    ],
    'createRequests': [
        {
            'targetingType': 'TARGETING_TYPE_BROWSER',
            'assignedTargetingOptions':
              createBrowserAssignedTargetingOptions
        }
    ]
}

# Edit the line item targeting.
response = service.advertisers().lineItems()\
  .bulkEditAssignedTargetingOptions(
    advertiserId=advertiser-id,
    body=bulk_edit_line_item_request
).execute()

# Print successfully updated line items.
if 'updatedLineItemIds' not in response:
  print("No line items were updated successfully.")
else:
  print("Targeting configurations for the following line item IDs were updated: %s"
        % response['updatedLineItemIds'])

# Print line items that failed to update.
if 'failedLineItemIds' not in response:
  print("No line items failed to update.")
else:
  print("Targeting configurations for the following line item IDs failed to update: %s"
        % response['failedLineItemIds'])
  if 'errors' in response:
    print("The failed updates were caused by the following errors:")
    for error in response["errors"]:
      print("Error code: %s, Message: %s" % (error["code"], error["message"]))

PHP

// Create delete request list.
$deleteRequests = array();

// Create and add browser assigned targeting option IDs to delete request list.
$deleteBrowserTargetingRequest =
    new Google_Service_DisplayVideo_DeleteAssignedTargetingOptionsRequest();
$deleteBrowserTargetingRequest->setTargetingType(
    "TARGETING_TYPE_BROWSER"
);
$deleteBrowserTargetingRequest->setAssignedTargetingOptionIds(
    delete-browser-assigned-targeting-ids
);
$deleteRequests[] = $deleteBrowserTargetingRequest;

// Create and add device assigned targeting option IDs to delete request list.
$deleteDeviceTargetingRequest =
    new Google_Service_DisplayVideo_DeleteAssignedTargetingOptionsRequest();
$deleteDeviceTargetingRequest->setTargetingType(
    "TARGETING_TYPE_DEVICE_MAKE_MODEL"
);
$deleteDeviceTargetingRequest->setAssignedTargetingOptionIds(
    delete-device-make-model-assigned-targeting-ids
);
$deleteRequests[] = $deleteDeviceTargetingRequest;

// Create create request list.
$createRequests = array();

// Create and populate list of browser assigned targetion options to create.
$createBrowserAssignedTargetingOptions = array();
foreach (create-browser-assigned-targeting-ids as $optionId) {
    $option = new Google_Service_DisplayVideo_AssignedTargetingOption();
    $details =
        new Google_Service_DisplayVideo_BrowserAssignedTargetingOptionDetails();
    $details->setTargetingOptionId($optionId);

    $option->setBrowserDetails($details);
    $createBrowserAssignedTargetingOptions[] = $option;
}

// Create and add browser assigned targeting option create request to create
// request list.
$createBrowserTargetingRequest =
    new Google_Service_DisplayVideo_CreateAssignedTargetingOptionsRequest();
$createBrowserTargetingRequest->setTargetingType(
    "TARGETING_TYPE_BROWSER"
);
$createBrowserTargetingRequest->setAssignedTargetingOptions(
    $createBrowserAssignedTargetingOptions
);
$createRequests[] = $createBrowserTargetingRequest;

// Create a bulk edit request and assign create and delete request lists.
$body =
    new Google_Service_DisplayVideo_BulkEditAssignedTargetingOptionsRequest();
$body->setLineItemIds(line-item-ids);
$body->setCreateRequests($createRequests);
$body->setDeleteRequests($deleteRequests);

// Call the API, editing the assigned targeting options for the identified
// line item.
$response = $service
    ->advertisers_lineItems
    ->bulkEditAssignedTargetingOptions(
        advertiser-id,
        $body
    );

// Print successfully updated line items.
if (!empty($response->getUpdatedLineItemIds())) {
    printf('Targeting configurations for the following line item IDs were updated:\n');
    foreach ($response->getUpdatedLineItemIds() as $id) {
        printf('%s\n', $id);
    }
} else {
    print('No line items were updated successfully.\n');
}

// Print line items that failed to update.
if (!empty($response->getFailedLineItemIds())) {
    print('Targeting configurations for the following line item IDs failed to update:\n');
    foreach ($response->getFailedLineItemIds() as $id) {
        printf('%s\n', $id);
    }
    print('The failed updates were caused by the following errors:\n');
    foreach ($response->getErrors() as $error) {
        printf('Error Code: %s, Message: %s\n', $error->getCode(), $error->getMessage());
    }
} else {
    print('No line items failed to update.\n');
}