Imposta targeting

I servizi Opzioni di targeting, Opzioni di targeting assegnate e Elementi pubblicitari vengono utilizzati insieme per impostare il targeting degli elementi pubblicitari nell'API Display & Video 360. Questa pagina descrive e fornisce esempi su come trovare le opzioni di targeting disponibili, assegnarle agli elementi pubblicitari ed eseguire operazioni collettive sugli elementi pubblicitari per elencare e modificare le opzioni di targeting assegnate.

Trovare le opzioni di targeting disponibili

Le opzioni di targeting utilizzano variabili specificate dall'utente, entità selezionabili esistenti o opzioni preesistenti per definire il pubblico di destinazione desiderato. Le opzioni preesistenti vengono identificate utilizzando i valori enum o gli ID opzioni di targeting, a seconda del tipo di targeting. Le entità selezionabili vengono identificate utilizzando i relativi ID entità. Puoi trovare gli ID entità e le opzioni di targeting utilizzando l'API Display & Video 360.

Utilizza i valori enum impostati

Le opzioni di targeting per i seguenti tipi di targeting vengono assegnate utilizzando tipi di enum specifici:

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

Una versione stringa del valore dell'enum pertinente può essere utilizzata per identificare le risorse AssignedTargetingOption esistenti di questi tipi di targeting ed è disponibile nel campo assignedTargetingOptionIdAlias. Puoi utilizzare questo valore dell'alias al posto di assignedTargetingOptionId quando recuperi o elimini le opzioni di targeting assegnate.

Recuperare gli ID delle opzioni di targeting

I tipi di targeting che utilizzano opzioni preesistenti vengono assegnati utilizzando gli ID opzione di targeting corrispondenti.

Ad esempio, esiste un numero limitato di posizioni sullo schermo che possono essere scelte come target utilizzando il tipo di targeting TARGETING_TYPE_ON_SCREEN_POSITION. Ogni di queste posizioni ha un ID opzione di targeting corrispondente.

Questi ID opzione di targeting possono essere recuperati tramite il servizio Opzioni di targeting. A seconda del tipo di targeting, il recupero viene eseguito in uno dei seguenti due modi:

  • Ritiro di singole opzioni o elenco esaustivo: il recupero delle opzioni per la maggior parte dei tipi di targeting può essere eseguito utilizzando i metodi get e list. Utilizza targetingTypes.targetingOptions.get per recuperare i dettagli di un'opzione di targeting identificata da un tipo di targeting e dall'ID opzione di targeting. Utilizza targetingTypes.targetingOptions.list per elencare tutte le opzioni di targeting disponibili di un determinato tipo di targeting.
  • Ricerca: le opzioni per i tipi di targeting per località (TARGETING_TYPE_GEO_REGION, TARGETING_TYPE_POI e TARGETING_TYPE_BUSINESS_CHAIN) devono essere recuperate utilizzando il metodo search. Utilizza targetingTypes.targetingOptions.search per recuperare le opzioni di targeting di un determinato tipo che corrispondono a determinate stringhe di query.

Ecco un esempio di come recuperare un elenco di possibili opzioni di targeting per il tipo di targeting 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
);

Elenca le entità che possono essere scelte come target

Per scegliere come target un elemento pubblicitario utilizzando un'entità selezionabile esistente, devi avere l'ID di quell'entità. Le entità selezionabili, come canali, segmenti di pubblico combinati e gruppi di origini inventario, sono recuperabili tramite i relativi servizi nell'API Display & Video 360.

Ogni servizio ha i propri metodi get e list. Utilizza il metodo get per confermare che un'entità è disponibile per un determinato inserzionista. Utilizza il metodo list per scoprire tutte le entità di quel tipo di risorsa disponibili per un determinato inserzionista e, di conseguenza, che possono essere utilizzate per assegnare il targeting a un elemento pubblicitario dell'inserzionista.

Un sottoinsieme di entità selezionabili può essere gestito anche tramite l'API. Questo avviene tramite i metodi create e patch nel servizio corrispondente, nonché tramite i servizi per i singoli valori elencati nelle entità, come le origini dell'inventario, le parole chiave escluse e le località.

Creare ID opzioni di targeting per PDI

Le opzioni di targeting per punti di interesse denominati in TARGETING_TYPE_POI possono essere recuperate utilizzando targetingTypes.targetingOptions.search. Inoltre, puoi creare ID opzioni di targeting TARGETING_TYPE_POI personalizzati per scegliere come target coordinate di latitudine e longitudine specifiche.

Per creare un ID opzione di targeting per i PDI:

  1. Recupera le coordinate di latitudine e longitudine (ad es. "40.7414691, -74.003387")
  2. Arrotonda i valori delle coordinate alla sesta cifra decimale (ad es. "40,741469, -74,003387")
  3. Rimuovi le cifre decimali dai valori delle coordinate (ad es. "40741469, -74003387")
  4. Concatena i due valori per creare una singola stringa, separata da un punto e virgola (ad es. "40741469;-74003387")

La stringa risultante può essere utilizzata come targetingOptionId durante la creazione di un'opzione di targeting assegnataTARGETING_TYPE_POI.

Al momento della creazione, i campi targetingOptionId e assignedTargetingOptionId della risorsa dell'opzione di targeting assegnata verranno aggiornati aggiungendo un punto e virgola e un hash alfanumerico.

Assegnare un'opzione di targeting

Il targeting assegnato a un elemento pubblicitario è rappresentato come opzione di targeting assegnata. Puoi gestire queste entità utilizzando il servizio Opzioni di targeting assegnate. La creazione di un'opzione di targeting assegnata applica i dettagli del targeting all'elemento pubblicitario principale. L'eliminazione di un'opzione di targeting assegnata esistente comporta la rimozione del targeting.

Utilizza advertisers.lineItems.targetingTypes.assignedTargetingOptions.create per creare le opzioni di targeting assegnate. Specifica i parametri di targeting nel campo details della risorsa dell'opzione di targeting assegnata che corrisponde al tipo di targeting previsto.

Ecco un esempio di come creare un'opzione di targeting assegnata del tipo di targeting 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']
);

Errori

Errori di configurazione del targeting

Esistono una serie di regole complesse relative al targeting in Display & Video 360. Queste regole vengono applicate nell'API Display & Video 360 tramite gli errori restituiti durante la creazione dell'opzione di targeting assegnata. L'errore restituito dall'API specificherà la violazione.

Gli errori sono causati principalmente dal targeting esistente assegnato a un elemento pubblicitario. Utilizza advertisers.lineItems.targetingTypes.assignedTargetingOptions.list per recuperare tutte le opzioni di targeting di un determinato tipo di targeting assegnato a un elemento pubblicitario, valuta se il targeting desiderato è possibile date le limitazioni e utilizza advertisers.lineItems.targetingTypes.assignedTargetingOptions.delete per rimuovere qualsiasi targeting indesiderato prima di tentare di nuovo di creare l'opzione di targeting assegnata che ti interessa.

Errori di targeting YouTube e partner

Il targeting specifico per le campagne di YouTube e partner non può essere aggiornato utilizzando l'API Display & Video 360 e il tentativo di farlo comporterà un errore.

Il targeting YouTube e partner è costituito da tutti i targeting assegnati direttamente agli elementi pubblicitari YouTube e partner e ai gruppi di annunci, nonché da qualsiasi targeting dei seguenti tipi di targeting:

  • TARGETING_TYPE_SESSION_POSITION
  • TARGETING_TYPE_YOUTUBE_CHANNEL
  • TARGETING_TYPE_YOUTUBE_VIDEO

Errori di concorrenza

Il tentativo di aggiornare le impostazioni o il targeting di un singolo elemento pubblicitario tramite più richieste simultanee comporterà un errore.

Se devi aggiungere o rimuovere contemporaneamente più opzioni di targeting assegnate per un singolo elemento pubblicitario, devi utilizzare una richiesta di modifica collettiva. Se vuoi aggiornare le impostazioni e il targeting di un elemento pubblicitario, effettua la richiesta advertisers.lineItems.patch e la richiesta di targeting pertinente consecutivamente per assicurarti che la seconda richiesta non venga inviata finché la prima non restituisce una risposta.

Operazioni di targeting collettivo e per l'intera risorsa

Puoi utilizzare i metodi di targeting collettivo e per l'intera risorsa per gestire le opzioni di targeting assegnate tra i tipi di targeting:

  • Utilizza i metodi di targeting collettivo per recuperare o modificare le opzioni di targeting in più tipi di targeting e in più risorse. Puoi recuperare le configurazioni complete del targeting di più elementi pubblicitari utilizzando advertisers.lineItems.bulkListAssignedTargetingOptions o apportare aggiornamenti identici al targeting in più elementi pubblicitari utilizzando advertisers.lineItems.bulkEditAssignedTargetingOptions. Sono disponibili solo nel servizio advertisers.lineItems.
  • Utilizza i metodi di targeting a livello di risorsa per recuperare o modificare le opzioni di targeting in più tipi di targeting in un'unica risorsa. Sono disponibili nei servizi partners e advertisers e sono denominati listAssignedTargetingOptions o editAssignedTargetingOptions.

Se vuoi una visualizzazione completa del targeting attuale di un elemento pubblicitario, vuoi applicare una configurazione di targeting preimpostata a un elemento pubblicitario o devi apportare più modifiche contemporaneamente al targeting di un elemento pubblicitario, valuta la possibilità di utilizzare questi metodi di targeting.

Applicare il targeting per elenco collettivamente

advertisers.lineItems.bulkListAssignedTargetingOptions offre un modo per esaminare tutto il targeting assegnato a uno o più elementi pubblicitari in diversi tipi di targeting. Funziona in modo simile a qualsiasi altro metodo list. Puoi utilizzare il parametro di query filter per filtrare i risultati in base a TargetingType o Inheritance.

Ecco un esempio di come elencare tutte le opzioni di targeting assegnate a un elemento pubblicitario che vengono ereditate dal partner o dall'inserzionista principale:

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

Modificare collettivamente il targeting

advertisers.lineItems.bulkEditAssignedTargetingOptions offre un modo per aggiungere e rimuovere contemporaneamente più opzioni di targeting di vari tipi da uno o più elementi pubblicitari.

Il metodo prende un elenco di DeleteAssignedTargetingOptionsRequests e un elenco di CreateAssignedTargetingOptionsRequests. Un singolo oggetto richiesta può rappresentare l'eliminazione o la creazione di più opzioni di targeting assegnate dello stesso tipo di targeting.

Se il tentativo di eliminazione o creazione di un'opzione di targeting assegnata causa un errore per un elemento pubblicitario, l'azione collettiva viene abbandonata per quell'elemento pubblicitario. La richiesta restituisce un elenco di elementi pubblicitari aggiornati, nonché elenchi di elementi pubblicitari di cui non è stato possibile aggiornare e gli errori pertinenti.

Di seguito è riportato un esempio di come modificare collettivamente le opzioni di targeting assegnate per uno o più elementi pubblicitari, in base a elenchi di opzioni di targeting assegnate da eliminare e opzioni di targeting da creare:

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