Les options de ciblage, Options de ciblage attribuées Les services des éléments de campagne sont tous utilisés conjointement pour définir le ciblage de l'élément de campagne dans les campagnes l'API Video 360. Cette page décrit et donne des exemples comment trouver les options de ciblage disponibles, attribuer des options de ciblage aux éléments de campagne et effectuer des opérations groupées sur ces éléments pour lister et modifier options de ciblage.
Consulter les options de ciblage disponibles
Les options de ciblage utilisent des variables spécifiées par l'utilisateur ou des variables existantes pouvant être ciblées des entités ou des options préexistantes pour définir l'audience ciblée souhaitée. Les options préexistantes sont identifiées à l'aide de valeurs d'énumération ou de l'option de ciblage. en fonction du type de ciblage. Les entités pouvant être ciblées sont identifiées à l'aide de leurs identifiants d'entité. Vous pouvez trouver les ID des options de ciblage et des entités à l'aide de la méthode Display & l'API Video 360.
Utiliser des valeurs d'énumération définies
Les options de ciblage des types de ciblage suivants sont attribuées à l'aide de la méthode types d'énumération spécifiques:
TargetingType |
Énumération |
---|---|
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 |
Une version de chaîne de la valeur d'énumération pertinente peut être utilisée pour identifier
AssignedTargetingOption
ressources de ces types de ciblage et est
disponible dans le champ assignedTargetingOptionIdAlias
. Vous pouvez
utilisez cette valeur d'alias à la place de assignedTargetingOptionId
lorsque
récupérer ou supprimer des options de ciblage attribuées.
Récupérer les ID des options de ciblage
Les types de ciblage utilisant des options préexistantes sont attribués via des ID des options de ciblage.
Par exemple, il existe un nombre fini de positions à l'écran qui
peuvent être ciblés à l'aide du type de ciblage TARGETING_TYPE_ON_SCREEN_POSITION
. Chaque
ont un identifiant d'option de ciblage correspondant.
Ces identifiants d'options de ciblage peuvent être récupérés via la Service d'options de ciblage : En fonction du type de ciblage, la récupération s'effectue de l'une des deux manières suivantes:
- Récupération individuelle ou liste exhaustive: récupération des options pour
La majorité des types de ciblage peuvent être réalisés à l'aide des méthodes
get
etlist
. UtiliseztargetingTypes.targetingOptions.get
pour récupérer les détails de une option de ciblage identifiée par un type de ciblage et un identifiant d'option de ciblage. UtiliseztargetingTypes.targetingOptions.list
pour afficher toutes les ressources disponibles les options de ciblage d'un type de ciblage donné. - Réseau de Recherche: options pour les types de ciblage basés sur la zone géographique
(
TARGETING_TYPE_GEO_REGION
,TARGETING_TYPE_POI
etTARGETING_TYPE_BUSINESS_CHAIN
) doit être récupérée à l'aide de la méthodesearch
. UtiliseztargetingTypes.targetingOptions.search
pour récupérer les options de ciblage d'un type donné qui correspondent à des chaînes de requête données.
Voici un exemple illustrant comment récupérer la liste des options de ciblage
options pour le type de ciblage 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 );
Lister les entités pouvant être ciblées
Pour cibler un élément de campagne à l'aide d'une entité existante pouvant être ciblée, vous devez l'identifiant de cette entité. Les entités pouvant être ciblées, telles que les critères des audiences combinées ; groupes de sources d'inventaire, peuvent être récupérés leurs propres services dans les campagnes display l'API Video 360.
Chaque service possède ses propres méthodes get
et list
. Utilisez la méthode get
pour
pour confirmer qu'une entité est disponible pour un annonceur donné. Utiliser le list
pour découvrir toutes les entités de ce type de ressource accessibles à
d'un annonceur donné et peuvent donc être utilisées pour attribuer le ciblage
de l'élément de campagne de cet annonceur.
Un sous-ensemble d'entités pouvant être ciblées peut également être géré via l'API. C'est
via les méthodes create
et patch
dans le service correspondant, comme
ainsi que les services associés aux valeurs individuelles répertoriées dans les entités,
sources d'inventaire,
mots clés à exclure ;
zones géographiques.
ID des options de ciblage des POI
Les options de ciblage des points d'intérêt nommés sous TARGETING_TYPE_POI
peuvent être
récupérée à l'aide de targetingTypes.targetingOptions.search
. Dans
De plus, vous pouvez créer des ID d'option de ciblage TARGETING_TYPE_POI
personnalisés pour
cibler des coordonnées de latitude-longitude spécifiques.
Pour créer un ID d'option de ciblage par POI, procédez comme suit:
- Récupérer les coordonnées de latitude-longitude (par exemple, "40.7414691, -74.003387")
- Arrondissez les valeurs des coordonnées à la sixième décimale (par exemple, "40.741469, -74,003387")
- Supprimez les décimales des valeurs des coordonnées (par exemple, « 40741469, -74003387")
- Concaténer les deux valeurs pour former une chaîne unique, séparées par un point-virgule (par exemple, « 40741469 ;-74003387 »)
La chaîne obtenue peut être utilisée comme targetingOptionId
lors de la création d'une
Option de ciblage attribuée : TARGETING_TYPE_POI
.
Lors de la création, les champs targetingOptionId
et assignedTargetingOptionId
de
la ressource d'option de ciblage attribuée est mise à jour, en ajoutant un point-virgule
et le hachage alphanumérique.
Attribuer une option de ciblage
Le ciblage attribué à un élément de campagne est représenté Option de ciblage attribuée. Vous pouvez gérer ces entités à l'aide des Service d'options de ciblage attribuées : Lorsque vous créez une option de ciblage attribuée, ces détails de ciblage sont appliqués un élément de campagne parent. La suppression d'une option de ciblage existante le ciblage.
Utilisez
advertisers.lineItems.targetingTypes.assignedTargetingOptions.create
pour créer des options de ciblage attribuées. Spécifiez les paramètres de ciblage dans la
Champ details
de la ressource d'option de ciblage attribuée qui
correspond au type de ciblage souhaité.
Voici un exemple de procédure à suivre pour créer une option de ciblage attribuée
du type de ciblage 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'] );
Erreurs
Erreurs de configuration du ciblage
Il existe un certain nombre de règles complexes concernant ciblage dans Display & Video 360. Ces règles sont appliquées le Réseau Display et L'API Video 360 via des erreurs renvoyées lors de la création de l'option de ciblage attribuée L'erreur renvoyée par l'API indique la violation.
Les erreurs sont principalement causées par des critères de ciblage existants associés à un élément de campagne. Utilisez
advertisers.lineItems.targetingTypes.assignedTargetingOptions.list
pour récupérer toutes les options de ciblage d'un type de ciblage donné attribué à une ligne
d'un élément, évaluer si le ciblage souhaité est possible compte tenu des limites
et utilisez
advertisers.lineItems.targetingTypes.assignedTargetingOptions.delete
de supprimer tout ciblage indésirable avant de tenter à nouveau de créer
l'option de ciblage attribuée.
YouTube et Erreurs de ciblage des partenaires
Ciblage spécifique pour YouTube et Impossible de mettre à jour les campagnes de partenaires avec le Réseau Display et L'API Video 360 génère une erreur.
YouTube et Le ciblage des partenaires comprend l'ensemble des critères de ciblage attribués directement YouTube et les éléments de campagne et les groupes d'annonces de partenaires, ainsi que Tout ciblage des types de ciblage suivants:
TARGETING_TYPE_SESSION_POSITION
TARGETING_TYPE_YOUTUBE_CHANNEL
TARGETING_TYPE_YOUTUBE_VIDEO
Erreurs de simultanéité
La tentative de mise à jour des paramètres ou du ciblage d'un seul élément de campagne via plusieurs requêtes simultanées se traduiront par une erreur.
Si vous devez ajouter ou supprimer plusieurs options de ciblage attribuées pour une même
élément de campagne en même temps, vous devez utiliser
demande de modification groupée. Si vous souhaitez mettre à jour
et le ciblage, assurez-vous que le advertisers.lineItems.patch
et des demandes de ciblage pertinentes consécutives pour garantir que la deuxième
requête n'est envoyée que lorsque le premier renvoie une réponse.
Opérations de ciblage groupées et à l'échelle des ressources
Vous pouvez utiliser des méthodes de ciblage groupées et à l'échelle de la ressource pour gérer les pour différents types de ciblage:
- Utilisez les méthodes de ciblage groupées pour récupérer ou modifier les options de ciblage sur
pour plusieurs types de ciblage
et pour plusieurs ressources. Vous pouvez récupérer
le ciblage complet de plusieurs éléments de campagne
advertisers.lineItems.bulkListAssignedTargetingOptions
ou effectuer des mises à jour identiques au ciblage pour plusieurs éléments de campagneadvertisers.lineItems.bulkEditAssignedTargetingOptions
Ces options ne sont disponibles que dans laadvertisers.lineItems
Google Cloud. - Récupérer ou modifier des options de ciblage à l'aide de méthodes de ciblage à l'échelle des ressources
pour plusieurs types de ciblage au sein d'une même ressource. Ceux-ci sont disponibles
dans
partners
,advertisers
,advertisers.campaigns
etadvertisers.insertionOrders
services et sont nomméslistAssignedTargetingOptions
oueditAssignedTargetingOptions
.
Si vous souhaitez obtenir une vue complète du ciblage actuel d'un élément de campagne, vous pouvez appliquer une configuration de ciblage prédéfinie pour un élément de campagne ou plusieurs modifications à effectuer au ciblage d'un élément de campagne, envisagez d'utiliser méthodes.
Ciblage par liste de manière groupée
advertisers.lineItems.bulkListAssignedTargetingOptions
permet d'examiner l'ensemble des critères de ciblage attribués à un ou plusieurs éléments de campagne
pour les différents types de ciblage. Il fonctionne de la même manière que n'importe quel autre list
.
. Vous pouvez utiliser le paramètre de requête filter
pour filtrer
les résultats de TargetingType
ou
Inheritance
Cet exemple montre comment répertorier toutes les options de ciblage attribuées à un élément de campagne. hérités par le partenaire parent ou l'annonceur:
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);
Modifier le ciblage de manière groupée
advertisers.lineItems.bulkEditAssignedTargetingOptions
permet d'ajouter et de supprimer plusieurs options de ciblage
d'un ou de plusieurs éléments
de campagne simultanément.
La méthode prend une liste
DeleteAssignedTargetingOptionsRequests
et une liste
CreateAssignedTargetingOptionsRequests
Une seule requête
peut représenter la suppression ou la création de plusieurs ciblages
du même type de ciblage.
Si la tentative de suppression ou de création d'une option de ciblage attribuée génère une pour un élément de campagne, l'action groupée est abandonnée pour celui-ci. La renvoie une liste de lignes correctement mises à jour , ainsi que les listes des éléments de campagne qui n'ont pas pu et les informations les erreurs.
Voici un exemple de modification groupée des options de ciblage attribuées pour une ou plusieurs éléments de campagne auxquels sont associées des listes d'options de ciblage à supprimer et à cibler options de création:
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'); }