En las Opciones de segmentación, Opciones de segmentación asignadas y Los servicios de líneas de pedido se usan conjuntamente para definir la segmentación de línea de pedido en las campañas API de Video 360. En esta página, se describen y dan ejemplos. sobre cómo encontrar las opciones de segmentación disponibles y asignarlas a las líneas y ejecutar operaciones masivas en ellas para enumerar y editar opciones de segmentación.
Buscar opciones de segmentación disponibles
Las opciones de segmentación usan variables especificadas por el usuario, valores de segmentación existentes entidades u opciones preexistentes para definir el público objetivo deseado. Las opciones preexistentes se identifican mediante valores de enumeración o la opción de segmentación. en función del tipo de segmentación. Las entidades a las que puedes orientar anuncios se identifican mediante sus IDs de entidad. Los IDs de las opciones de orientación y los IDs de las entidades se pueden encontrar con el Anuncios gráficos y API de Video 360.
Cómo configurar valores de enumeración
Las opciones de segmentación para los siguientes tipos de segmentación se asignan usando tipos de enumeración específicos:
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 |
Se puede usar una versión de cadena del valor enum relevante para identificar
AssignedTargetingOption
recursos de estos tipos de segmentación y es
disponibles en el campo assignedTargetingOptionIdAlias
. Puedes
usa este valor de alias en lugar de assignedTargetingOptionId
cuando
recuperar o borrar las opciones de segmentación asignadas.
Recuperar los IDs de las opciones de segmentación
Los tipos de segmentación que usan opciones preexistentes se asignan mediante las ID de las opciones de segmentación.
Por ejemplo, hay un número finito de posiciones en la pantalla que
puede segmentarse con el tipo de segmentación TARGETING_TYPE_ON_SCREEN_POSITION
. Cada
de estas posiciones tienen un ID de opción de orientación correspondiente.
Estos ID de opciones de orientación pueden recuperarse mediante el Servicio de opciones de segmentación. Según el de segmentación, la recuperación se realiza de dos maneras:
- Recuperación individual o lista exhaustiva: Recuperación de opciones para el
la mayoría de los tipos de segmentación se pueden realizar con los métodos
get
ylist
. UsatargetingTypes.targetingOptions.get
para recuperar los detalles de una opción de segmentación identificada por un tipo de segmentación y un ID de opción de segmentación UsatargetingTypes.targetingOptions.list
para ver una lista de todos los disponibles opciones de segmentación de un tipo determinado. - Búsqueda: Opciones para los tipos de segmentación basadas en la ubicación
(
TARGETING_TYPE_GEO_REGION
,TARGETING_TYPE_POI
yTARGETING_TYPE_BUSINESS_CHAIN
) debe recuperarse con el métodosearch
. UsatargetingTypes.targetingOptions.search
para recuperarla. opciones de segmentación de un tipo determinado que coincidan con determinadas cadenas de consulta.
A continuación, se muestra un ejemplo sobre cómo recuperar una lista de opciones de segmentación posibles
opciones para el tipo de segmentación 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 );
Enumera las entidades que se pueden orientar
Para orientar una línea de pedido con una entidad actual que se puede orientar, necesita el ID de esa entidad. Entidades a las que se puede orientar, como canales, los públicos combinados grupos de origen de inventario, se pueden recuperar mediante sus propios servicios en la Red de Display y API de Video 360.
Cada servicio tiene sus propios métodos get
y list
. Usa el método get
para
confirmar que una entidad está disponible para un anunciante determinado. Usa el list
para descubrir todas las entidades de ese tipo de recurso que están disponibles para una
anunciante determinado y, por lo tanto, se puede usar para asignar una segmentación a un
línea de pedido de ese anunciante.
También se puede administrar un subconjunto de entidades objetivo a través de la API. Este es
a través de los métodos create
y patch
en el servicio correspondiente, como
y servicios para los valores individuales enumerados en las entidades, como
fuentes de inventario,
palabras clave negativas, y
ubicaciones.
Cómo crear los IDs de las opciones de segmentación de lugares de interés
Las opciones de segmentación de lugares de interés con nombre, en TARGETING_TYPE_POI
, se pueden
recuperada con targetingTypes.targetingOptions.search
. En
Además, puedes crear IDs de opciones de segmentación TARGETING_TYPE_POI
personalizados para
se orientan a coordenadas específicas de latitud y longitud.
Sigue estos pasos para crear un ID de opción de segmentación de lugares de interés:
- Recupera las coordenadas de latitud y longitud (p. ej., "40.7414691, -74.003387")
- Redondear los valores de coordenadas al sexto decimal (p. ej., “40.741469, -74.003387")
- Quita los decimales de los valores de coordenadas (p. ej., "40741469, -74003387")
- Concatena los dos valores para formar una sola cadena, separada por un punto y coma (p. ej.: "40741469;-74003387")
La cadena resultante se puede usar como targetingOptionId
cuando se crea un
TARGETING_TYPE_POI
opción de segmentación asignada.
Después de la creación, los campos targetingOptionId
y assignedTargetingOptionId
de
se actualizará el recurso de opción de segmentación asignado y se agregará un punto y coma
y un hash alfanumérico.
Cómo asignar una opción de segmentación
La segmentación asignada a una línea de pedido se representa Opción de orientación asignada. Puedes administrar estas entidades con el Servicio de opciones de segmentación asignadas. Al crear una opción de orientación asignada, se aplican esos detalles de orientación al línea de pedido superior. Si borras una opción de segmentación existente, se quitará esa la segmentación de clientes.
Usa
advertisers.lineItems.targetingTypes.assignedTargetingOptions.create
para crear opciones de segmentación asignadas. Especifica los parámetros de segmentación en la
details
del recurso de opción de segmentación asignado que
se corresponda con el tipo de segmentación deseado.
A continuación, se muestra un ejemplo de cómo crear una opción de segmentación asignada
para el tipo de segmentación 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'] );
Errores
Errores de configuración de la segmentación
Hay una serie de reglas complejas sobre de segmentación en Display y Video en 360° Estas se aplican en la Red de Display y API de Video 360 a través de errores que se muestran cuando se creó la opción de segmentación asignada. El error que muestra la API especificará el incumplimiento.
La mayoría de los errores se debe a la segmentación existente asignada a una línea de pedido. Usa
advertisers.lineItems.targetingTypes.assignedTargetingOptions.list
Para recuperar todas las opciones de segmentación de un tipo de segmentación determinado asignado a una línea
evalúa si la segmentación deseada es posible dadas las limitaciones
y utiliza
advertisers.lineItems.targetingTypes.assignedTargetingOptions.delete
quitar la segmentación no deseada antes de volver a intentar crear la
opción de segmentación asignada.
YouTube y Errores de segmentación de socios
Orientación específica para YouTube y Las campañas de Partners no se pueden actualizar la Red de Display y API de Video 360 y si lo intentas hacer, se producirá un error.
YouTube y La segmentación de socios consiste en toda la segmentación asignada directamente a YouTube y Líneas de pedido y grupos de anuncios de Partners, así como Cualquier segmentación de los siguientes tipos de segmentación:
TARGETING_TYPE_SESSION_POSITION
TARGETING_TYPE_YOUTUBE_CHANNEL
TARGETING_TYPE_YOUTUBE_VIDEO
Errores de simultaneidad
Si intentas actualizar la configuración o la segmentación de una sola línea de pedido mediante varias solicitudes simultáneas provocarán errores.
Si necesitas agregar o quitar varias opciones de segmentación asignadas a una sola
al mismo tiempo, debes usar una
solicitud de edición masiva. Si quieres actualizar la configuración
y la segmentación, haz que la advertisers.lineItems.patch
y la solicitud de segmentación relevante de forma consecutiva para garantizar que la segunda
la solicitud no se envía hasta que la primera devuelve una respuesta.
Operaciones de segmentación masiva y en todo el recurso
Puede usar métodos de segmentación masiva y en todo el recurso para administrar las ubicaciones para todos los tipos de segmentación:
- Utilice métodos de orientación masiva para recuperar o modificar las opciones de orientación en
entre varios tipos de segmentación
y en varios recursos. Puedes recuperar el
configuraciones de segmentación completas de varias líneas de pedido
advertisers.lineItems.bulkListAssignedTargetingOptions
o realice actualizaciones idénticas en la segmentación en varias líneas de pedido medianteadvertisers.lineItems.bulkEditAssignedTargetingOptions
Solo están disponibles enadvertisers.lineItems
servicio. - Usa métodos de segmentación para todo el recurso para recuperar o editar las opciones de segmentación.
en varios tipos de segmentación
en un solo recurso. Están disponibles
en
partners
,advertisers
,advertisers.campaigns
y deadvertisers.insertionOrders
y se denominanlistAssignedTargetingOptions
oeditAssignedTargetingOptions
.
Si quieres una vista completa de la segmentación actual de una línea de pedido, puedes aplicar una configuración de segmentación predefinida para una línea de pedido con la segmentación de una línea de pedido simultáneamente .
Incluir orientaciones de forma masiva
advertisers.lineItems.bulkListAssignedTargetingOptions
proporciona una forma de ver toda la segmentación asignada a una o más líneas de pedido
en varios tipos de segmentación. Funciona de manera similar a cualquier otro list
.
. Puedes usar el parámetro de consulta filter
para filtrar
los resultados por TargetingType
o
Inheritance
A continuación, se muestra un ejemplo de cómo enumerar todas las opciones de segmentación asignadas a una línea de pedido que hereda el socio principal o el anunciante
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);
Cómo editar la segmentación de forma masiva
advertisers.lineItems.bulkEditAssignedTargetingOptions
proporciona una forma de agregar y quitar varias opciones de segmentación de diversos tipos de segmentación.
de una o más líneas de pedido simultáneamente.
El método toma una lista de
DeleteAssignedTargetingOptionsRequests
y una lista de
CreateAssignedTargetingOptionsRequests
Una sola solicitud
El objeto puede representar la eliminación o creación de varias segmentaciones asignadas
del mismo tipo de segmentación.
Si el intento de eliminación o creación de una opción de segmentación asignada provoca una de una línea de pedido, se abandona la acción masiva para esa línea de pedido. El la solicitud muestra una lista de líneas actualizadas correctamente líneas de pedido, así como listas de líneas de pedido que no se pudieron actualización y los atributos relevantes errores.
A continuación, se muestra un ejemplo sobre cómo editar de forma masiva las opciones de segmentación asignadas para una o más líneas de pedido con listas de opciones de segmentación asignadas para borrar y segmentar Opciones para crear:
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'); }