Tetapkan Penargetan

Opsi Penargetan, Opsi Penargetan yang Ditetapkan, dan Layanan Item baris semuanya digunakan untuk menetapkan penargetan item baris di kolom Display & Video 360 API. Halaman ini menjelaskan dan memberikan contoh cara menemukan opsi penargetan yang tersedia, menetapkan opsi penargetan ke baris item baris, dan menjalankan operasi massal pada item baris untuk mencantumkan dan mengedit item baris opsi penargetan.

Menemukan opsi penargetan yang tersedia

Opsi penargetan menggunakan variabel yang ditentukan pengguna, variabel yang ada entitas, atau opsi yang sudah ada sebelumnya untuk mendefinisikan target audiens yang diinginkan. Opsi yang sudah ada sebelumnya diidentifikasi menggunakan nilai enum atau opsi penargetan ID, bergantung pada jenis penargetan. Entitas yang dapat ditargetkan diidentifikasi menggunakan ID entitas mereka. ID opsi penargetan dan ID entitas dapat ditemukan menggunakan Layar & Video 360 API.

Menggunakan nilai enum yang ditetapkan

Opsi penargetan untuk jenis penargetan berikut ditetapkan menggunakan jenis enum tertentu:

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

Versi string dari nilai enum yang relevan bisa digunakan untuk mengidentifikasi nilai enum yang ada AssignedTargetingOption referensi jenis penargetan ini dan yang tersedia di kolom assignedTargetingOptionIdAlias. Anda dapat gunakan nilai alias ini sebagai pengganti assignedTargetingOptionId saat mengambil atau menghapus opsi penargetan yang ditetapkan.

Ambil ID opsi penargetan

Jenis penargetan yang menggunakan opsi yang sudah ada sebelumnya ditetapkan menggunakan ID opsi penargetan.

Misalnya, ada sejumlah posisi di layar yang dapat ditargetkan menggunakan jenis penargetan TARGETING_TYPE_ON_SCREEN_POSITION. Masing-masing posisi ini memiliki ID opsi penargetan yang sesuai.

ID opsi penargetan ini dapat diambil melalui Layanan Opsi Penargetan. Bergantung pada jenis penargetan, pengambilan dilakukan dengan salah satu dari dua cara:

  • Pengambilan individual atau daftar lengkap: Pengambilan opsi untuk sebagian besar jenis penargetan dapat dilakukan menggunakan metode get dan list. Gunakan targetingTypes.targetingOptions.get untuk mengambil detail opsi penargetan yang diidentifikasi berdasarkan jenis penargetan dan ID opsi penargetan. Gunakan targetingTypes.targetingOptions.list untuk menampilkan semua yang tersedia opsi penargetan dari jenis penargetan tertentu.
  • Penelusuran: Opsi untuk jenis penargetan berbasis lokasi (TARGETING_TYPE_GEO_REGION, TARGETING_TYPE_POI, dan TARGETING_TYPE_BUSINESS_CHAIN) harus diambil menggunakan metode search. Gunakan targetingTypes.targetingOptions.search untuk mengambil opsi penargetan dari jenis tertentu yang cocok dengan string kueri yang diberikan.

Berikut adalah contoh cara mengambil daftar kemungkinan penargetan opsi untuk jenis penargetan TARGETING_TYPE_BROWSER:

Java

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

Python

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

Membuat daftar entity yang dapat ditargetkan

Untuk menargetkan item baris menggunakan entitas yang dapat ditargetkan yang sudah ada, Anda harus ID entitas tersebut. Entitas yang dapat ditargetkan, seperti saluran, audiens gabungan, dan grup sumber inventaris, dapat diambil melalui layanan mereka sendiri di platform Display & Video 360 API.

Setiap layanan memiliki metode get dan list sendiri. Gunakan metode get untuk mengonfirmasi bahwa suatu entitas tersedia di bawah pengiklan tertentu. Menggunakan list untuk menemukan semua entitas dari jenis resource tersebut yang tersedia bagi pengiklan tertentu, sehingga dapat digunakan dalam menetapkan penargetan ke di bawah pengiklan tersebut.

Sebagian entitas yang dapat ditargetkan juga dapat dikelola melalui API. Ini adalah dilakukan melalui metode create dan patch di layanan yang sesuai, serta layanan untuk nilai individu yang tercantum dalam entitas, seperti sumber inventaris, kata kunci negatif, dan lokasi.

Buat ID opsi penargetan POI

Opsi penargetan lokasi menarik yang dinamai, di bagian TARGETING_TYPE_POI dapat diambil menggunakan targetingTypes.targetingOptions.search. Di beberapa Selain itu, Anda dapat membuat ID opsi penargetan TARGETING_TYPE_POI khusus untuk menargetkan koordinat lintang-bujur tertentu.

Ikuti langkah-langkah berikut untuk membuat ID opsi penargetan POI:

  1. Ambil koordinat lintang-bujur (mis: "40.7414691, -74.003387")
  2. Bulatkan nilai koordinat ke tempat desimal keenam (contoh: "40.741469, -74,003387")
  3. Hapus tempat desimal dari nilai koordinat (contoh: "40741469, -74003387")
  4. Menggabungkan dua nilai untuk membuat string tunggal, dipisahkan dengan titik koma. (misalnya: "40741469;-74003387")

String yang dihasilkan dapat digunakan sebagai targetingOptionId saat membuat TARGETING_TYPE_POI menetapkan opsi penargetan.

Setelah dibuat, kolom targetingOptionId dan assignedTargetingOptionId pada resource opsi penargetan yang ditetapkan akan diperbarui, dengan menambahkan titik koma dan hash alfanumerik.

Tetapkan opsi penargetan

Penargetan yang ditetapkan ke item baris ditampilkan sebagai Opsi Penargetan yang Ditetapkan. Anda dapat mengelola entitas ini menggunakan Layanan Opsi Penargetan yang Ditetapkan. Membuat opsi penargetan yang ditetapkan akan menerapkan detail penargetan tersebut ke item baris induk. Menghapus opsi penargetan yang ditetapkan yang ada akan menghapus opsi tersebut penargetan.

Gunakan advertisers.lineItems.targetingTypes.assignedTargetingOptions.create untuk membuat opsi penargetan yang ditetapkan. Tentukan parameter penargetan di Kolom details dari resource opsi penargetan yang ditetapkan sesuai dengan jenis penargetan yang diinginkan.

Berikut contoh cara membuat opsi penargetan yang ditetapkan jenis penargetan TARGETING_TYPE_BROWSER:

Java

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

Python

# 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']
);

Error

Error konfigurasi penargetan

Ada sejumlah aturan rumit mengenai penargetan di kampanye Display & Video 360 Hal ini diberlakukan di perangkat Display & Video 360 API melalui error yang ditampilkan saat pembuatan opsi penargetan yang ditetapkan. Error yang ditampilkan oleh API akan menentukan pelanggaran.

Error sebagian besar disebabkan oleh penargetan yang sudah ada yang ditetapkan ke item baris. Gunakan advertisers.lineItems.targetingTypes.assignedTargetingOptions.list untuk mengambil semua opsi penargetan dari jenis penargetan tertentu yang ditetapkan ke sebuah baris item Anda, menilai apakah penargetan yang diinginkan dapat dilakukan dengan keterbatasannya, dan gunakan advertisers.lineItems.targetingTypes.assignedTargetingOptions.delete untuk menghapus penargetan yang tidak diinginkan sebelum mencoba lagi membuat opsi penargetan yang ditetapkan.

YouTube & Error penargetan partner

Penargetan khusus untuk YouTube & Kampanye Partners tidak dapat diperbarui menggunakan perangkat Display & Video 360 API dan mencoba melakukannya akan menghasilkan error.

YouTube & Penargetan partner terdiri dari semua penargetan yang ditetapkan langsung kepada YouTube & Item Baris Partner dan Grup Iklan, serta semua penargetan dari jenis penargetan berikut:

  • TARGETING_TYPE_SESSION_POSITION
  • TARGETING_TYPE_YOUTUBE_CHANNEL
  • TARGETING_TYPE_YOUTUBE_VIDEO

Error serentak

Mencoba memperbarui setelan atau penargetan item baris tunggal melalui beberapa permintaan serentak akan mengakibatkan error.

Jika Anda perlu menambahkan atau menghapus beberapa opsi penargetan yang ditetapkan untuk satu item baris pada saat yang sama, Anda harus menggunakan permintaan edit massal. Jika Anda ingin memperbarui setelan dan penargetan, jadikan advertisers.lineItems.patch dan permintaan penargetan relevan secara berurutan untuk memastikan permintaan tidak dikirim sebelum yang pertama mengembalikan respons.

Operasi penargetan massal dan seluruh resource

Anda dapat menggunakan metode penargetan massal dan seluruh resource untuk mengelola opsi penargetan di seluruh jenis penargetan:

Jika Anda ingin gambaran lengkap dari penargetan item baris saat ini, terapkan sebuah konfigurasi penargetan yang telah ditetapkan sebelumnya ke item baris, atau perlu melakukan beberapa perubahan ke penargetan item baris secara bersamaan, pertimbangkan untuk menggunakan penargetan ini metode.

Cantumkan penargetan secara massal

advertisers.lineItems.bulkListAssignedTargetingOptions menyediakan cara untuk melihat semua penargetan yang ditetapkan ke satu atau beberapa item baris di berbagai jenis penargetan. Alat ini beroperasi serupa dengan list lainnya . Anda dapat menggunakan parameter kueri filter untuk memfilter hasil dari TargetingType atau Inheritance.

Berikut adalah contoh cara menampilkan daftar semua opsi penargetan yang ditetapkan ke item baris yang diwarisi oleh partner induk atau pengiklan:

Java

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

Python

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

Mengedit penargetan secara massal

advertisers.lineItems.bulkEditAssignedTargetingOptions menyediakan cara untuk menambahkan dan menghapus beberapa opsi penargetan dari berbagai penargetan jenis dari satu atau beberapa item baris secara bersamaan.

Metode ini mengambil daftar DeleteAssignedTargetingOptionsRequests dan daftar CreateAssignedTargetingOptionsRequests. Satu permintaan dapat merepresentasikan penghapusan atau pembuatan beberapa penargetan yang ditetapkan opsi jenis penargetan yang sama.

Jika upaya penghapusan atau pembuatan opsi penargetan yang ditetapkan menyebabkan untuk item baris, tindakan massal diabaikan untuk item baris tersebut. Tujuan menampilkan daftar baris yang berhasil diperbarui item baris, serta daftar item baris yang gagal update dan resource error.

Berikut contoh cara mengedit massal opsi penargetan yang ditetapkan untuk satu atau beberapa opsi item baris diberi daftar opsi penargetan yang ditetapkan untuk dihapus dan penargetan opsi yang ingin dibuat:

Java

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

Python

# 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');
}