Le Opzioni di targeting, Opzioni di targeting assegnato e I servizi degli elementi pubblicitari vengono utilizzati insieme per impostare il targeting degli elementi pubblicitari della rete l'API Video 360. Questa pagina descrive e fornisce esempi su come trovare le opzioni di targeting disponibili, assegnare le opzioni di targeting ed eseguire operazioni collettive sugli elementi pubblicitari per elencare e modificare le tue opzioni di targeting.
Individuare le opzioni di targeting disponibili
Le opzioni di targeting utilizzano variabili specificate dall'utente ed esistenti disponibili per il targeting entità o opzioni preesistenti per definire il pubblico di destinazione desiderato. Le opzioni preesistenti sono identificate utilizzando valori enum o l'opzione di targeting ID, a seconda del tipo di targeting. Le entità selezionabili come target sono identificate utilizzando e i relativi ID entità. Puoi trovare gli ID opzione di targeting e gli ID entità utilizzando il Display e l'API 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 enum pertinente può essere utilizzata per identificare
AssignedTargetingOption
di questi tipi di targeting ed è
disponibile nel campo assignedTargetingOptionIdAlias
. Puoi
utilizza questo valore alias al posto di assignedTargetingOptionId
quando
recupero o eliminazione delle opzioni di targeting assegnate.
Recuperare gli ID delle opzioni di targeting
I tipi di targeting che utilizzano opzioni preesistenti vengono assegnati utilizzando i valori corrispondenti ID opzioni di targeting.
Ad esempio, esiste un numero finito di posizioni sullo schermo che
possono essere scelti come target con il tipo di targeting TARGETING_TYPE_ON_SCREEN_POSITION
. Ciascuna
di queste posizioni hanno un ID opzione di targeting corrispondente.
Questi ID delle opzioni di targeting possono essere recuperati tramite Servizio Opzioni di targeting. In base tipo di targeting, il recupero avviene in uno di questi due modi:
- Recupero individuale o elenco esaustivo: recupero di opzioni per il
la maggior parte dei tipi di targeting può essere effettuata con i metodi
get
elist
. UtilizzatargetingTypes.targetingOptions.get
per recuperare i dettagli di un'opzione di targeting identificata da un tipo di targeting e da un ID opzione di targeting. Utilizza le funzionalità ditargetingTypes.targetingOptions.list
per elencare tutte le opzioni disponibili le opzioni di targeting di un determinato tipo. - Ricerca: opzioni per i tipi di targeting basato sulla località.
(
TARGETING_TYPE_GEO_REGION
,TARGETING_TYPE_POI
eTARGETING_TYPE_BUSINESS_CHAIN
) deve essere recuperata utilizzando il metodosearch
. UtilizzatargetingTypes.targetingOptions.search
per recuperare opzioni di targeting di un determinato tipo che corrispondono a determinate stringhe di query.
Di seguito viene riportato un esempio di come recuperare un elenco di possibili targeting
opzioni 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 entità selezionabili come target
Per scegliere come target un elemento pubblicitario che utilizza un'entità esistente disponibile per il targeting, devi l'ID di quell'entità. Entità selezionabili come target, come canali, segmenti di pubblico combinati e gruppi di origini dell'inventario, sono recuperabili tramite i propri servizi nella Rete Display e l'API Video 360.
Ogni servizio ha i propri metodi get
e list
. Usa il metodo get
per
per confermare che un'entità è disponibile
per un determinato inserzionista. Usa list
per scoprire tutte le entità di quel tipo di risorsa disponibili per un
un determinato inserzionista e, di conseguenza, può essere utilizzata nell'assegnazione del targeting a un
dell'elemento pubblicitario in quell'inserzionista.
Un sottoinsieme di entità selezionabili come target può essere gestito anche tramite l'API. Questo è
eseguita tramite i metodi create
e patch
nel servizio corrispondente, come
così come i servizi per i singoli valori elencati nelle entità, ad esempio
origini dell'inventario,
parole chiave escluse e
località.
Crea ID opzioni di targeting per PDI
Le opzioni di targeting per punti d'interesse denominati, sotto TARGETING_TYPE_POI
possono essere
recuperato utilizzando targetingTypes.targetingOptions.search
. Nella
Inoltre, puoi creare ID opzione di targeting TARGETING_TYPE_POI
personalizzati per
scegliere come target specifiche coordinate di latitudine e longitudine.
Per creare un ID opzione di targeting per PDI:
- Recuperare le coordinate di latitudine-longitudine (ad es. "40.7414691, -74.003387")
- Arrotondare i valori delle coordinate alla sesta posizione decimale (ad es. "40,741469, -74,003387")
- Rimuovi le posizioni decimali dai valori delle coordinate (ad es. "40741469, -74003387")
- Concatena i due valori in modo da creare un'unica 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 assegnata a TARGETING_TYPE_POI
.
Al momento della creazione, i campi targetingOptionId
e assignedTargetingOptionId
di
la risorsa dell'opzione di targeting assegnata verrà aggiornata, aggiungendo un punto e virgola
e hash alfanumerico.
Assegnare un'opzione di targeting
Il targeting assegnato a un elemento pubblicitario è rappresentato da una Opzione di targeting assegnata. Puoi gestire queste entità utilizzando Servizio Opzioni di targeting assegnate. La creazione di un'opzione di targeting assegnata applica i dettagli di targeting ai dell'elemento pubblicitario principale. L'eliminazione di un'opzione di targeting assegnata esistente rimuove quello targeting.
Utilizza le funzionalità di
advertisers.lineItems.targetingTypes.assignedTargetingOptions.create
per creare opzioni di targeting assegnate. Specifica i parametri di targeting nella
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 varie regole complesse relative targeting in Display & Video a 360°. Questi criteri sono applicati in Display & L'API Video 360 tramite 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 le funzionalità di
advertisers.lineItems.targetingTypes.assignedTargetingOptions.list
per recuperare tutte le opzioni di targeting di un determinato tipo di targeting assegnate a una linea
elemento, valuta se il targeting desiderato è possibile date le limitazioni,
e utilizza
advertisers.lineItems.targetingTypes.assignedTargetingOptions.delete
rimuovere eventuali targeting indesiderati prima di tentare nuovamente di creare il tipo
l'opzione di targeting assegnata.
YouTube e Errori di targeting dei partner
Targeting specifico per YouTube e Le campagne partner non possono essere aggiornate utilizzando Display & L'API Video 360 e il tentativo di farlo causerà un errore.
YouTube e Il targeting per partner consiste in tutti i criteri di targeting assegnati direttamente YouTube e gli elementi pubblicitari e i gruppi di annunci dei partner, nonché uno dei seguenti tipi di targeting:
TARGETING_TYPE_SESSION_POSITION
TARGETING_TYPE_YOUTUBE_CHANNEL
TARGETING_TYPE_YOUTUBE_VIDEO
Errori di contemporaneità
Il tentativo di aggiornare le impostazioni o il targeting di un singolo elemento pubblicitario tramite più richieste in parallelo provocheranno un errore.
Se hai bisogno di aggiungere o rimuovere più opzioni di targeting assegnate per un singolo
contemporaneamente, devi utilizzare una
richiesta di modifica collettiva. Se vuoi aggiornare le impostazioni
le impostazioni e il targeting, advertisers.lineItems.patch
richiesta e alla richiesta di targeting pertinente consecutivamente per garantire che la seconda
non viene inviata finché la prima non restituisce una risposta.
Operazioni di targeting collettive e a livello di risorsa
Puoi utilizzare metodi di targeting collettivo e a livello di risorsa per gestire opzioni di targeting per i vari tipi di targeting:
- Utilizza i metodi di targeting collettivo per recuperare o modificare le opzioni di targeting in
per più tipi di targeting
e in più risorse. Puoi recuperare
configurazioni di targeting complete di più elementi pubblicitari utilizzando
advertisers.lineItems.bulkListAssignedTargetingOptions
o apporta aggiornamenti identici al targeting per più elementi pubblicitari utilizzandoadvertisers.lineItems.bulkEditAssignedTargetingOptions
. Queste sono disponibili solo neladvertisers.lineItems
completamente gestito di Google Cloud. - 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. Questi sono disponibili
tra
partners
,advertisers
,advertisers.campaigns
eadvertisers.insertionOrders
e sono denominatilistAssignedTargetingOptions
oeditAssignedTargetingOptions
.
Se desideri una visione completa del targeting corrente di un elemento pubblicitario, applica una di targeting predefinito per un elemento pubblicitario o se devi apportare più modifiche al targeting di un elemento pubblicitario contemporaneamente, considera l'utilizzo di questi criteri di machine learning.
Targeting dell'elenco in blocco
advertisers.lineItems.bulkListAssignedTargetingOptions
consente di esaminare tutti i criteri di targeting assegnati a uno o più elementi pubblicitari
per tipi di targeting diversi. Funziona in modo simile a qualsiasi altro list
. Puoi utilizzare il parametro di query filter
per filtrare
i risultati per TargetingType
o
Inheritance
Di seguito viene riportato un esempio di come elencare tutte le opzioni di targeting assegnate a un elemento pubblicitario ereditati 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
consente di aggiungere e rimuovere più opzioni di targeting di vario tipo
tipi da uno o più elementi pubblicitari contemporaneamente.
Il metodo prende un elenco
DeleteAssignedTargetingOptionsRequests
e un elenco di
CreateAssignedTargetingOptionsRequests
. Una singola richiesta
può rappresentare l'eliminazione o la creazione di più criteri di targeting assegnati
opzioni dello stesso tipo di targeting.
Se il tentativo di eliminazione o creazione di un'opzione di targeting assegnata determina per un elemento pubblicitario, l'azione collettiva viene abbandonata per quell'elemento. La restituisce un elenco di righe aggiornate correttamente ed elenchi di elementi pubblicitari che non hanno aggiorna e pertinente errori.
Ecco un esempio di come apportare modifiche collettive alle opzioni di targeting assegnate per uno o più agli elementi pubblicitari con elenchi di opzioni di targeting assegnate da eliminare e scegliere come target opzioni per 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'); }