Ausrichtung festlegen

Mit den Targeting-Optionen Zugewiesene Ausrichtungsoptionen und Über Werbebuchungen werden alle Werbebuchungs-Targeting im Display- und Video 360 API Auf dieser Seite finden Sie Beschreibungen und Beispiele wie Sie verfügbare Ausrichtungsoptionen finden, weisen Sie der Werbebuchung Ausrichtungsoptionen zu. und Bulk-Vorgänge für Werbebuchungen ausführen, um die zugewiesenen Ausrichtungsoptionen.

Verfügbare Ausrichtungsoptionen finden

Für die Ausrichtungsoptionen werden benutzerdefinierte Variablen oder vorhandene Variablen verwendet Entitäten oder bereits bestehende Optionen zum Definieren der gewünschten Zielgruppe. Bereits vorhandene Optionen werden entweder mithilfe von Aufzählungswerten oder der Targeting-Option identifiziert. IDs, abhängig vom Targeting-Typ Für die Ausrichtung geeignete Entitäten werden mithilfe von ihre Entitäts-IDs. Die IDs der Ausrichtungsoptionen und Entitäts-IDs finden Sie mithilfe der Display- und Video 360 API

Festgelegte enum-Werte verwenden

Ausrichtungsoptionen für die folgenden Targeting-Typen werden mithilfe von bestimmte enum-Typen:

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

Eine Stringversion des relevanten enum-Werts kann verwendet werden, um vorhandene zu identifizieren. AssignedTargetingOption Ressourcen dieser Ausrichtungstypen und ist verfügbar im Feld assignedTargetingOptionIdAlias. Sie können Verwenden Sie diesen Alias-Wert anstelle von assignedTargetingOptionId, wenn Abrufen oder Löschen zugewiesener Targeting-Optionen.

IDs der Ausrichtungsoptionen abrufen

Ausrichtungstypen mit vorhandenen Optionen werden über entsprechende IDs der Targeting-Optionen.

Es gibt z. B. eine endliche Anzahl von Positionen auf dem Bildschirm, kann mit dem Ausrichtungstyp TARGETING_TYPE_ON_SCREEN_POSITION ausgerichtet werden. Jedes dieser Positionen eine entsprechende Targeting-Options-ID haben.

Diese Ausrichtungsoptionen-IDs können über die Dienst für Targeting-Optionen Je nach Ausrichtungstyp auswählen, erfolgt der Abruf auf zwei Arten:

  • Einzelner Abruf oder vollständige Liste: Abrufen der Optionen für die Die meisten Ausrichtungstypen können mit den Methoden get und list vorgenommen werden. Mit targetingTypes.targetingOptions.get können Sie Details zu Eine Ausrichtungsoption, die durch einen Ausrichtungstyp und eine Ausrichtungsoptionen-ID identifiziert wird. Verwenden Sie targetingTypes.targetingOptions.list, um alle verfügbaren Ausrichtungsoptionen eines bestimmten Ausrichtungstyps festlegen.
  • Suche: Optionen für standortbasierte Ausrichtungstypen (TARGETING_TYPE_GEO_REGION, TARGETING_TYPE_POI und TARGETING_TYPE_BUSINESS_CHAIN) müssen mit der Methode search abgerufen werden. Verwenden Sie targetingTypes.targetingOptions.search zum Abrufen Ausrichtungsoptionen eines bestimmten Typs, die mit bestimmten Abfragezeichenfolgen übereinstimmen.

Hier ein Beispiel für das Abrufen einer Liste möglicher Ausrichtungen Optionen für den Ausrichtungstyp 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
);

Entitäten auflisten, auf die ein Targeting vorgenommen werden kann

Um eine Werbebuchung mithilfe eines vorhandenen Elements, für das ein Targeting möglich ist, durchzuführen, müssen Sie ID dieser Entität. Entitäten, für die ein Targeting möglich ist, z. B. Channels kombinierte Zielgruppen und Inventarquellengruppen, können über ihre eigenen Dienste in den Bereichen Video 360 API

Jeder Dienst hat seine eigenen get- und list-Methoden. Verwenden Sie die Methode get, um Sie können bestätigen, dass eine Entität unter einem bestimmten Werbetreibenden verfügbar ist. list verwenden , um alle Entitäten dieses Ressourcentyps zu ermitteln, die für einen Werbetreibenden zugewiesen werden und somit für das Zuweisen von Targeting unter diesem Werbetreibenden schalten.

Ein Teil der Entitäten, für die eine Ausrichtung möglich ist, kann auch über die API verwaltet werden. Dies ist über die Methoden create und patch im entsprechenden Dienst, wie sowie Dienste für die einzelnen Werte, die in den Entitäten aufgeführt sind, wie z. B. Inventarquellen auszuschließende Keywords Standorte.

IDs der Optionen für die Ausrichtung auf POIs erstellen

Für benannte POI-Ausrichtungsoptionen unter TARGETING_TYPE_POI kann Folgendes gelten: abgerufen mit targetingTypes.targetingOptions.search. In Außerdem können Sie spezifische IDs für TARGETING_TYPE_POI-Targeting-Optionen erstellen, um auf bestimmte Breiten- und Längengrade ausgerichtet ist.

So erstellen Sie eine ID für die Ausrichtungsoption:

  1. Koordinaten abrufen (z. B. "40.7414691, -74.003387")
  2. Koordinatenwerte auf die sechste Dezimalstelle runden (z. B.: "40.741469, -74,003387")
  3. Entfernen Sie die Dezimalstellen aus den Koordinatenwerten (z. B. "40741469, -74003387")
  4. Die beiden Werte zu einem einzelnen String verketten, der durch ein Semikolon getrennt ist (Beispiel: „40741469;-74003387“)

Der resultierende String kann als targetingOptionId beim Erstellen eines TARGETING_TYPE_POI zugewiesene Ausrichtungsoption.

Nach dem Erstellen werden die Felder targetingOptionId und assignedTargetingOptionId von wird die zugewiesene Ressource für Targeting-Optionen aktualisiert. Dabei wird ein Semikolon und einen alphanumerischen Hashwert.

Ausrichtungsoption zuweisen

Das Targeting, das einer Werbebuchung zugewiesen ist, wird als Zugewiesene Ausrichtungsoption: Sie können diese Entitäten mithilfe der Dienst für zugewiesene Ausrichtungsoptionen: Wenn Sie eine zugewiesene Targeting-Option erstellen, werden diese Targeting-Details auf die übergeordneten Werbebuchung. Wenn Sie eine vorhandene zugewiesene Targeting-Option löschen, Ausrichtung.

Verwenden Sie advertisers.lineItems.targetingTypes.assignedTargetingOptions.create um zugewiesene Targeting-Optionen zu erstellen. Geben Sie die Targeting-Parameter in der details der zugewiesenen Targeting-Option-Ressource, die dem gewünschten Targeting-Typ entspricht.

Hier sehen Sie ein Beispiel für das Erstellen einer zugewiesenen Ausrichtungsoption. des Ausrichtungstyps 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']
);

Fehler

Fehler bei der Targeting-Konfiguration

Es gibt eine Reihe komplexer Regeln für die Ausrichtung in Display- und Video 360 Diese werden erzwungen in das Display- und Video 360 API aufgrund von Fehlern, die beim Erstellen der zugewiesenen Targeting-Option zurückgegeben wurden. Der von der API zurückgegebene Fehler gibt den Verstoß an.

Fehler werden meist durch das vorhandene Targeting verursacht, das einer Werbebuchung zugewiesen ist. Verwenden Sie advertisers.lineItems.targetingTypes.assignedTargetingOptions.list zum Abrufen aller Targeting-Optionen eines bestimmten Targeting-Typs, der einer Zeile zugewiesen ist überprüfen Sie, ob das gewünschte Targeting angesichts der Einschränkungen möglich ist, und verwenden Sie advertisers.lineItems.targetingTypes.assignedTargetingOptions.delete um unerwünschtes Targeting zu entfernen, bevor Sie erneut versuchen, Ausrichtungsoption zugewiesen.

YouTube und Ausrichtungsfehler bei Partnern

Ausrichtung speziell für YouTube und Partnerkampagnen können nicht aktualisiert werden mit das Display- und Video 360 API und der Versuch führen zu einem Fehler.

YouTube und Das Partner-Targeting umfasst alle Targeting-Optionen, die direkt YouTube und Partner-Werbebuchungen und Anzeigengruppen sowie beliebiges Targeting der folgenden Targeting-Typen:

  • TARGETING_TYPE_SESSION_POSITION
  • TARGETING_TYPE_YOUTUBE_CHANNEL
  • TARGETING_TYPE_YOUTUBE_VIDEO

Gleichzeitigkeitsfehler

Der Versuch, die Einstellungen oder das Targeting einer einzelnen Werbebuchung über gleichzeitige Anfragen führen zu einem Fehler.

Wenn Sie mehrere zugewiesene Ausrichtungsoptionen für eine gleichzeitig eine Werbebuchung auswählen, Bulk-Bearbeitungsanfrage an. Wenn Sie das Targeting für eine Werbebuchung Einstellungen und Ausrichtung auswählen, müssen Sie die advertisers.lineItems.patch und relevante Targeting-Anfrage nacheinander an, um sicherzustellen, -Anforderung wird erst gesendet, wenn die erste eine Antwort zurückgibt.

Bulk- und ressourcenweite Targeting-Vorgänge

Sie können Bulk-Targeting und ressourcenweite Ausrichtungsmethoden verwenden, um die zugewiesenen Ausrichtungsoptionen für verschiedene Ausrichtungstypen:

Wenn Sie einen vollständigen Überblick über das aktuelle Targeting einer Werbebuchung erhalten möchten, wenden Sie einen Targeting-Konfiguration auf eine Werbebuchung anwenden oder mehrere Änderungen für das Targeting einer Werbebuchung hat, sollten Sie diese Targeting-Optionen .

Listen-Targeting im Bulk

advertisers.lineItems.bulkListAssignedTargetingOptions können Sie das gesamte Targeting ansehen, das einer oder mehreren Werbebuchungen zugewiesen ist. für unterschiedliche Ausrichtungstypen aus. Die Funktionsweise ist ähnlich wie bei allen anderen list . Mit dem Abfrageparameter filter können Sie filtern, die Ergebnisse nach TargetingType oder Inheritance

Hier sehen Sie ein Beispiel für die Auflistung aller einer Werbebuchung zugewiesenen Targeting-Optionen. die vom übergeordneten Partner oder Werbetreibenden übernommen werden:

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

Ausrichtung per Bulk-Verfahren bearbeiten

advertisers.lineItems.bulkEditAssignedTargetingOptions können Sie mehrere Ausrichtungsoptionen mit unterschiedlichen Ausrichtungsoptionen hinzufügen und entfernen. aus einer oder mehreren Werbebuchungen gleichzeitig.

Die Methode verwendet eine Liste DeleteAssignedTargetingOptionsRequests und eine Liste mit CreateAssignedTargetingOptionsRequests Eine einzelne Anfrage das Löschen oder Erstellen mehrerer zugewiesener Targeting-Kriterien desselben Ausrichtungstyps auswählen.

Wenn das Löschen oder Erstellen einer zugewiesenen Targeting-Option zu einer für eine Werbebuchung aufgetreten ist, wird die Bulk-Aktion für diese Werbebuchung abgebrochen. Die gibt eine Liste der erfolgreich aktualisierten Zeilen Werbebuchungen sowie mit Listen der Werbebuchungen, deren Update und die relevanten Fehler.

Hier sehen Sie ein Beispiel für die Bulk-Bearbeitung von zugewiesenen Targeting-Optionen für eine oder mehrere Werbebuchungen mit Listen zugewiesener Targeting-Optionen, die gelöscht werden sollen, sowie Optionen für die Erstellung:

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