Ustaw kierowanie

Opcje kierowania Przypisane opcje kierowania oraz Usługi elementów zamówienia są używane w połączeniu, aby ustawić kierowania elementów zamówienia w Interfejs Video 360 API. Na tej stronie opisujemy i przedstawiamy przykłady jak znaleźć dostępne opcje kierowania, przypisać je do linii elementów zamówienia i wykonywać na nich operacje zbiorcze, aby wyświetlać i edytować przypisane opcje kierowania.

Znajdowanie dostępnych opcji kierowania

Opcje kierowania korzystają ze zmiennych określonych przez użytkownika lub istniejących elementów elementów lub opcji definiowania docelowych odbiorców. Istniejące opcje są określane za pomocą wartości wyliczeniowych lub opcji kierowania identyfikatory w zależności od typu kierowania. Elementy, na które można kierować reklamy, są identyfikowane za pomocą ich identyfikatory. Identyfikatory opcji kierowania i elementów możesz znaleźć za pomocą parametru Reklamy displayowe i Interfejs Video 360 API.

Użyj wartości ustawionych wartości wyliczeniowych

Opcje kierowania dla tych typów kierowania są przypisywane za pomocą: określone typy wyliczeniowych:

TargetingType Typ wyliczeniowy
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

Za pomocą ciągu znaków odpowiedniej wartości wyliczeniowej można zidentyfikować istniejące AssignedTargetingOption zasobów z tymi typami kierowania dostępne w polu assignedTargetingOptionIdAlias. Dostępne opcje użyj tej wartości aliasu zamiast assignedTargetingOptionId, gdy pobierania lub usuwania przypisanych opcji kierowania.

Pobieranie identyfikatorów opcji kierowania

Typy kierowania, które korzystają z istniejących opcji, są przypisywane za pomocą odpowiednich identyfikatory opcji kierowania.

Na przykład istnieje ograniczona liczba pozycji na ekranie, które mogą być celem kierowania za pomocą typu kierowania TARGETING_TYPE_ON_SCREEN_POSITION. Każdy tych pozycji mają odpowiedni identyfikator opcji kierowania.

Identyfikatory opcji kierowania można pobrać w Usługa opcji kierowania. W zależności od kierowania, pobieranie może być przeprowadzane na jeden z dwóch sposobów:

  • Pojedyncze dane lub pełna lista: pobranie opcji dla Większość typów kierowania można ustawić za pomocą metod get i list. Użyj narzędzia targetingTypes.targetingOptions.get, aby pobrać szczegółowe informacje: opcji kierowania określonej przez typ i identyfikator opcji kierowania. Używaj targetingTypes.targetingOptions.list, aby wyświetlić wszystkie dostępne danego typu kierowania.
  • Sieć wyszukiwania: opcje typów kierowania opartych na lokalizacji. (TARGETING_TYPE_GEO_REGION, TARGETING_TYPE_POI i TARGETING_TYPE_BUSINESS_CHAIN) należy pobrać przy użyciu metody search. Użyj aplikacji targetingTypes.targetingOptions.search, aby pobrać opcje kierowania danego typu, które pasują do określonych ciągów zapytań.
.

Oto przykład pobierania listy możliwych ustawień kierowania opcje kierowania typu 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
);

Wyświetlenie listy jednostek, na które można kierować reklamy

Aby ustawić kierowanie elementu zamówienia za pomocą istniejącego elementu kierowania, musisz: identyfikatora podmiotu. elementy, na które można kierować reklamy, takie jak kanały; odbiorców z połączonych list, grup źródeł zasobów reklamowych można pobierać za pomocą: własnych usług w sieci reklamowej Interfejs Video 360 API.

Każda usługa ma własne metody get i list. Użyj metody get do: potwierdzić, że dany element jest dostępny w ramach danego reklamodawcy. Użyj funkcji list wykrywa wszystkie encje danego typu zasobów dostępne dla konkretnego reklamodawcy, więc można ich używać do przypisywania kierowania do elementu zamówienia danego reklamodawcy.

Podzbiorem jednostek, na które można kierować reklamy, można też zarządzać za pomocą interfejsu API. To jest za pomocą metod create i patch w odpowiedniej usłudze, jak a także usług dla poszczególnych wartości wymienionych w elementach, takich jak źródła zasobów reklamowych, wykluczające słowa kluczowe, lokalizacje.

Utwórz identyfikatory opcji kierowania ciekawych miejsc

Opcje kierowania na ciekawe miejsca, w kolumnie TARGETING_TYPE_POI, można pobrano za pomocą funkcji targetingTypes.targetingOptions.search. W Możesz też tworzyć niestandardowe identyfikatory opcji kierowania TARGETING_TYPE_POI, kierować reklamy na współrzędne geograficzne.

Aby utworzyć identyfikator opcji kierowania na ciekawe miejsca, wykonaj te czynności:

  1. Pobierz współrzędne szerokości i długości geograficznej (np. „40.7414691, -74.003387”)
  2. Zaokrąglaj współrzędne do szóstego miejsca po przecinku (np. „40.741469, -74,003387”)
  3. Usuń miejsca po przecinku z wartości współrzędnych (np. „40741469, -74003387”).
  4. Połącz obie wartości, aby utworzyć jeden ciąg znaków rozdzielonych średnikiem (np. „40741469;-74003387”)

Otrzymanego ciągu znaków można użyć jako targetingOptionId podczas tworzenia TARGETING_TYPE_POI przypisana opcja kierowania.

Po utworzeniu pola targetingOptionId i assignedTargetingOptionId w argumencie przypisany zasób opcji kierowania zostanie zaktualizowany (doda się do niego średnik) i hasz alfanumeryczny.

Przypisywanie opcji kierowania

Kierowanie przypisane do elementu zamówienia jest przedstawiane jako Przypisane opcje kierowania. Możesz zarządzać tymi elementami za pomocą Usługa Przypisane opcje kierowania. Utworzenie przypisanej opcji kierowania powoduje zastosowanie tych szczegółów do: nadrzędny element zamówienia. Usunięcie przypisanej opcji kierowania spowoduje usunięcie tej kierowania reklam.

Używaj advertisers.lineItems.targetingTypes.assignedTargetingOptions.create aby utworzyć przypisane opcje kierowania. Określ parametry kierowania w parametrze details przypisanego zasobu opcji kierowania, który odpowiada jej typowi kierowania.

Oto przykład tworzenia przypisanej opcji kierowania typu kierowania 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']
);

Błędy

Błędy konfiguracji kierowania

Istnieje wiele złożonych zasad dotyczących kierowanie w sieci reklamowej i Film 360. Są one egzekwowane w ekran Interfejs Video 360 API zawierający błędy zwrócone podczas tworzenia przypisanej opcji kierowania. Naruszenie wskazuje błąd zwrócony przez interfejs API.

Błędy są najczęściej spowodowane przez istniejące kierowanie przypisane do elementu zamówienia. Używaj advertisers.lineItems.targetingTypes.assignedTargetingOptions.list pozwala pobrać wszystkie opcje kierowania o danym typie kierowania przypisanym do wiersza należy ocenić, czy pożądane kierowanie jest możliwe przy tych ograniczeniach i użyj advertisers.lineItems.targetingTypes.assignedTargetingOptions.delete usunąć niechciane kierowanie i ponownie utworzyć przypisanej opcji kierowania.

YouTube i Błędy w kierowaniu partnerów

Kierowanie na YouTube i Kampanii Google Partners nie można aktualizować za pomocą ekran Użycie interfejsu Video 360 API spowoduje błąd.

YouTube i Kierowanie na partnerów obejmuje wszystkie ustawienia kierowania przypisane bezpośrednio YouTube i elementów zamówienia partnerów i grup reklam, a także dowolne z tych typów kierowania:

  • TARGETING_TYPE_SESSION_POSITION
  • TARGETING_TYPE_YOUTUBE_CHANNEL
  • TARGETING_TYPE_YOUTUBE_VIDEO

Błędy równoczesności

Próba zaktualizowania ustawień lub kierowania pojedynczego elementu zamówienia przez wiele równoczesnych żądań spowoduje błąd.

Jeśli chcesz dodać lub usunąć wiele przypisanych opcji kierowania dla jednej elementu zamówienia, użyj typu żądanie zmiany zbiorczej. Jeśli chcesz zaktualizować ustawień i kierowania, advertisers.lineItems.patch i odpowiednie żądania kierowania reklam, aby zapewnić żądanie nie zostanie wysłane, dopóki pierwsze nie zwróci odpowiedzi.

Zbiorcze operacje kierowania lub operacje kierowania na poziomie zasobów

Do zarządzania przypisanymi możesz używać metod kierowania zbiorczego i obejmującego zasoby opcje kierowania w różnych typach kierowania:

Aby uzyskać pełny obraz bieżącego kierowania elementu zamówienia, możesz zastosować wstępnie ustawioną konfigurację kierowania elementu zamówienia lub wprowadzić wiele zmian; do kierowania elementu zamówienia w tym samym czasie, rozważ zastosowanie tych .

Zbiorcze kierowanie na listy

advertisers.lineItems.bulkListAssignedTargetingOptions umożliwia wgląd w wszystkie ustawienia kierowania przypisane do co najmniej jednego elementu zamówienia. w przypadku różnych typów kierowania. Działa ona podobnie jak wszystkie inne list . Do filtrowania możesz używać parametru zapytania filter wyniki według TargetingType lub Inheritance.

Oto przykład, jak wyświetlić listę wszystkich opcji kierowania przypisanych do elementu zamówienia dziedziczone przez nadrzędnego partnera lub reklamodawcę:

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

Zbiorcze edytowanie kierowania

advertisers.lineItems.bulkEditAssignedTargetingOptions umożliwia dodawanie i usuwanie wielu opcji kierowania o różnej skuteczności typów z jednego lub wielu elementów zamówienia jednocześnie.

Metoda pobiera listę DeleteAssignedTargetingOptionsRequests oraz lista CreateAssignedTargetingOptionsRequests Pojedyncza prośba może reprezentować usunięcie lub utworzenie wielu przypisanych ustawień kierowania opcje tego samego typu kierowania.

Jeśli próba usunięcia lub utworzenia przypisanej opcji kierowania powoduje , oznacza to, że w przypadku danego elementu zamówienia działanie zbiorcze zostanie porzucone. żądanie zwraca listę pomyślnie zaktualizowanych wierszy elementy zamówienia oraz elementy zamówienia, których nie udało się zrealizować aktualizację oraz odpowiednie .

Oto przykład, jak zbiorczo edytować przypisane opcje kierowania w przypadku co najmniej jednego ustawienia elementy zamówienia z listami przypisanych opcji kierowania do usunięcia i kierowania opcje tworzenia:

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