La administración de la segmentación de recursos es una función central de la API de Display & Video 360. La segmentación se puede asignar a varios tipos de recursos y utiliza varios otros recursos y espacios de ID. En esta página, se detallan las limitaciones que debes tener en cuenta y las prácticas recomendadas que debes implementar cuando adoptes los servicios de opciones de segmentación asignadas de la API de Display & Video 360.
Utiliza la herencia de la segmentación
Los recursos secundarios pueden heredar la segmentación asignada a algunos recursos. Las opciones de segmentación que hereda un recurso secundario se pueden recuperar, pero no se pueden editar a nivel del recurso secundario. Esto permite que la configuración de seguridad de la marca y otros parámetros de segmentación se apliquen en todo el socio o anunciante.
La ruta de herencia se puede ver en el siguiente diagrama:
Como se especifica en el diagrama, algunos niveles de segmentación solo admiten un subconjunto de tipos de segmentación. Esto significa que algunas opciones de segmentación no se pueden establecer en niveles más altos ni heredarse, sino que deben establecerse en un nivel inferior.
Herencia en los recursos de YouTube y socios
La herencia de segmentación no se refleja en los recursos de YouTube y socios en la API de Display & Video 360. La segmentación que heredan los grupos de anuncios no se podrá recuperar a nivel de AdGroup
, y los recursos secundarios no heredarán la segmentación de YouTube asignada a los recursos superiores.
Para recuperar toda la configuración de segmentación funcional de un grupo de anuncios, debes recuperar las opciones de segmentación asignadas para el grupo de anuncios, la línea de pedido superior y el anunciante superior.
Ten en cuenta la segmentación asignada durante la creación de la línea de pedido
Además de las opciones de segmentación heredadas, la mayoría de las segmentaciones solo se pueden asignar después de crear una línea de pedido. Sin embargo, hay algunos tipos de segmentación que tienen un subconjunto predeterminado de valores asignados a las líneas de pedido cuando se crean. Estos tipos de segmentación son los siguientes:
Si intentas crear opciones de segmentación asignadas existentes o borrar opciones que no existen, se muestra un error, por lo que te recomendamos que tengas en cuenta el paquete completo de segmentación que se asigna a tus líneas de pedido cuando las creas. Si necesitas recuperar la segmentación asignada a una línea de pedido en todos los tipos de segmentación, usa advertisers.lineItems.bulkListAssignedTargetingOptions
.
Además, algunos parámetros de configuración se establecen de forma predeterminada cuando no se asigna ninguna opción de segmentación de ese tipo al recurso. Por ejemplo, si un recurso no tiene definida una opción de segmentación TARGETING_TYPE_AUTHORIZED_SELLER_STATUS
, significa que usa el estado "Vendedores y revendedores directos autorizados".
No esperes que se aplique automáticamente la "segmentación predeterminada".
En Display & Video 360, la segmentación establecida a nivel de la campaña o del pedido de inserción no se pasa de inmediato a sus líneas de pedido secundarias. Esta segmentación se conoce como "segmentación predeterminada" y se usa como una plantilla de segmentación que se aplica a las líneas de pedido que se crean posteriormente en la IU.
En la API de Display & Video 360, la segmentación predeterminada no se aplica automáticamente a las líneas de pedido creadas recientemente. La creación de líneas de pedido básicas no copia ninguna segmentación a nivel de la campaña ni del pedido de inserción. En este caso, la segmentación se debe aplicar a las líneas de pedido por separado a través de los métodos crear o editar en bloque de la opción de segmentación asignada.
Los métodos especiales pueden ser una excepción. Por ejemplo, las líneas de pedido creadas a través de advertisers.lineItems.generateDefault
copian la configuración de su pedido de inserción superior, incluida la segmentación asignada.
Del mismo modo, a las líneas de pedido creadas a través de la duplicación se les asignará la misma segmentación que a la línea de pedido original.
No se puede modificar la segmentación de YouTube y socios
No se pueden actualizar las segmentaciones específicas para las campañas de YouTube y socios con la API de Display & Video 360.
La segmentación de YouTube y socios consiste en todas las segmentaciones asignadas directamente a las líneas de pedido de YouTube y socios y a los grupos de anuncios, así como a cualquier segmentación de los siguientes tipos de segmentación:
TARGETING_TYPE_SESSION_POSITION
TARGETING_TYPE_YOUTUBE_CHANNEL
TARGETING_TYPE_YOUTUBE_VIDEO
Esta segmentación se puede actualizar directamente desde la IU de Display & Video 360 o subiendo un archivo de datos estructurados.
Asigna la Segmentación por público con una sola opción
Las opciones de segmentación para la mayoría de los tipos de segmentación se asignan de forma individual. La segmentación por público no sigue esta convención modular, sino que se asigna en un solo objeto detalles de segmentación por público configurable que enumera los IDs de los públicos que se incluirán y excluirán cuando se publiquen los anuncios. El assignedTargetingOptionId
para esta opción de grupo de público, una vez asignado, siempre es "audienceGroup".
Este diseño implica que, para realizar cualquier cambio en la segmentación del grupo de público, primero debes borrar la opción de segmentación asignada al grupo de público existente y, luego, crear una nueva opción de segmentación del grupo de público con los cambios deseados. Esto se puede hacer en una sola solicitud con advertisers.lineItems.bulkEditAssignedTargetingOptions
.
Este es un ejemplo de cómo actualizar la segmentación por público para segmentar de forma positiva a públicos adicionales de Google:
Java
long advertiserId = advertiser-id; long lineItemId = line-item-id List<Long> addedGoogleAudienceIds = Arrays.asList(google-audience-id-to-add,...); // Build Google audience targeting settings objects to add to audience // targeting. ArrayList<GoogleAudienceTargetingSetting> newGoogleAudienceSettings = new ArrayList<GoogleAudienceTargetingSetting>(); // Convert list of Google Audience IDs into list of settings. for (Long googleAudienceId : addedGoogleAudienceIds) { newGoogleAudienceSettings.add(new GoogleAudienceTargetingSetting() .setGoogleAudienceId(googleAudienceId)); } // Create relevant bulk edit request objects. BulkEditLineItemAssignedTargetingOptionsRequest requestContent = new BulkEditLineItemAssignedTargetingOptionsRequest(); AudienceGroupAssignedTargetingOptionDetails updatedAudienceGroupDetails; ArrayList<DeleteAssignedTargetingOptionsRequest> audienceGroupDeleteRequests = new ArrayList<DeleteAssignedTargetingOptionsRequest>(); try { // Retrieve existing audience group targeting. AssignedTargetingOption existingAudienceGroupTargetingOption = service .advertisers() .lineItems() .targetingTypes() .assignedTargetingOptions() .get( advertiserId, lineItemId, "TARGETING_TYPE_AUDIENCE_GROUP", "audienceGroup" ).execute(); // Extract existing audience group targeting details. updatedAudienceGroupDetails = existingAudienceGroupTargetingOption.getAudienceGroupDetails(); // Build and add delete request for existing audience group targeting. ArrayList<String> deleteAudienceGroupAssignedTargetingIds = new ArrayList<String>(); deleteAudienceGroupAssignedTargetingIds.add("audienceGroup"); audienceGroupDeleteRequests .add(new DeleteAssignedTargetingOptionsRequest() .setTargetingType("TARGETING_TYPE_AUDIENCE_GROUP") .setAssignedTargetingOptionIds( deleteAudienceGroupAssignedTargetingIds ) ); } catch (GoogleJsonResponseException e) { updatedAudienceGroupDetails = new AudienceGroupAssignedTargetingOptionDetails(); } // Set delete requests in edit request. requestContent.setDeleteRequests(audienceGroupDeleteRequests); // Construct new group of Google Audiences to include in targeting. GoogleAudienceGroup updatedIncludedGoogleAudienceGroup = updatedAudienceGroupDetails.getIncludedGoogleAudienceGroup(); if (updatedIncludedGoogleAudienceGroup != null) { List<GoogleAudienceTargetingSetting> updatedGoogleAudienceSettings = updatedIncludedGoogleAudienceGroup.getSettings(); updatedGoogleAudienceSettings.addAll(newGoogleAudienceSettings); updatedIncludedGoogleAudienceGroup .setSettings(updatedGoogleAudienceSettings); } else { updatedIncludedGoogleAudienceGroup = new GoogleAudienceGroup(); updatedIncludedGoogleAudienceGroup.setSettings(newGoogleAudienceSettings); } // Add new Google Audience group to audience group targeting details. updatedAudienceGroupDetails .setIncludedGoogleAudienceGroup(updatedIncludedGoogleAudienceGroup); // Create new targeting option to assign. AssignedTargetingOption newAudienceGroupTargeting = new AssignedTargetingOption(); newAudienceGroupTargeting .setAudienceGroupDetails(updatedAudienceGroupDetails); // Build audience group targeting create request and add to list of create // requests. ArrayList<AssignedTargetingOption> createAudienceGroupAssignedTargetingOptions = new ArrayList<AssignedTargetingOption>(); createAudienceGroupAssignedTargetingOptions.add(newAudienceGroupTargeting); ArrayList<CreateAssignedTargetingOptionsRequest> targetingCreateRequests = new ArrayList<CreateAssignedTargetingOptionsRequest>(); targetingCreateRequests.add(new CreateAssignedTargetingOptionsRequest() .setTargetingType("TARGETING_TYPE_AUDIENCE_GROUP") .setAssignedTargetingOptions( createAudienceGroupAssignedTargetingOptions ) ); // Set create requests in edit request. requestContent.setCreateRequests(targetingCreateRequests); // Configure and execute the bulk list request. BulkEditLineItemAssignedTargetingOptionsResponse response = service.advertisers().lineItems() .bulkEditLineItemAssignedTargetingOptions( advertiserId, lineItemId, requestContent).execute();
Python
advertiser_id = advertiser-id line_item_id = line-item-id added_google_audiences = [google-audience-id-to-add,...] # Build Google audience targeting settings objects to create. new_google_audience_targeting_settings = [] for google_audience_id in added_google_audiences: new_google_audience_targeting_settings.append( {'googleAudienceId': google_audience_id} ) # Retrieve any existing line item audience targeting. retrieved_audience_targeting = service.advertisers().lineItems( ).targetingTypes().assignedTargetingOptions().get( advertiserId=advertiser_id, lineItemId=line_item_id, targetingType="TARGETING_TYPE_AUDIENCE_GROUP", assignedTargetingOptionId="audienceGroup" ).execute() updated_audience_group_details = {} # Copy over any existing audience targeting. if 'audienceGroupDetails' in retrieved_audience_targeting: updated_audience_group_details = retrieved_audience_targeting[ 'audienceGroupDetails'] # Append the new Google audience IDs to any existing positive Google # audience targeting. if 'includedGoogleAudienceGroup' in updated_audience_group_details: updated_audience_group_details[ 'includedGoogleAudienceGroup']['settings'].extend( new_google_audience_targeting_settings) else: updated_audience_group_details['includedGoogleAudienceGroup'] = { 'settings': new_google_audience_targeting_settings } # Build bulk edit request. bulk_edit_request = { 'deleteRequests': [ { 'targetingType': "TARGETING_TYPE_AUDIENCE_GROUP", 'assignedTargetingOptionIds': [ "audienceGroup" ] } ], 'createRequests': [ { 'targetingType': "TARGETING_TYPE_AUDIENCE_GROUP", 'assignedTargetingOptions': [ {'audienceGroupDetails': updated_audience_group_details} ] } ] } # Update the audience targeting updated_audience_targeting = service.advertisers().lineItems( ).bulkEditLineItemAssignedTargetingOptions( advertiserId=advertiser_id, lineItemId=line_item_id, body=bulk_edit_request ).execute()
PHP
$advertiserId = advertiser-id; $lineItemId = line-item-id; $addedGoogleAudienceIds = array(google-audience-id-to-add,...); // Convert list of Google Audience IDs into list of Google audience // settings. $newGoogleAudienceSettings = array(); foreach ($addedGoogleAudienceIds as $googleAudienceId) { $newSetting = new Google_Service_DisplayVideo_GoogleAudienceTargetingSetting(); $newSetting->setGoogleAudienceId($googleAudienceId); $newGoogleAudienceSettings[] = $newSetting; } // Create a bulk edit request. $requestBody = new Google_Service_DisplayVideo_BulkEditLineItemAssignedTargetingOptionsRequest(); $audienceGroupDeleteRequests = array(); try { // Retrieve existing audience group targeting. $existingAudienceGroupTargetingOption = $this ->service ->advertisers_lineItems_targetingTypes_assignedTargetingOptions ->get( $advertiserId, $lineItemId, 'TARGETING_TYPE_AUDIENCE_GROUP', 'audienceGroup' ); // Extract existing audience group targeting details. $updatedAudienceGroupDetails = $existingAudienceGroupTargetingOption ->getAudienceGroupDetails(); // Build and add delete request for existing audience group // targeting. $deleteAudienceGroupAssignedTargetingIds = array(); $deleteAudienceGroupAssignedTargetingIds[] = "audienceGroup"; $audienceGroupDeleteRequest = new Google_Service_DisplayVideo_DeleteAssignedTargetingOptionsRequest(); $audienceGroupDeleteRequest ->setTargetingType('TARGETING_TYPE_AUDIENCE_GROUP'); $audienceGroupDeleteRequest ->setAssignedTargetingOptionIds( $deleteAudienceGroupAssignedTargetingIds ); $audienceGroupDeleteRequests[] = $audienceGroupDeleteRequest; } catch (\Exception $e) { $updatedAudienceGroupDetails = new Google_Service_DisplayVideo_AudienceGroupAssignedTargetingOptionDetails(); } // Set delete requests in edit request. $requestBody->setDeleteRequests($audienceGroupDeleteRequests); // Construct new group of Google audiences to include in targeting. $updatedIncludedGoogleAudienceGroup = $updatedAudienceGroupDetails ->getIncludedGoogleAudienceGroup(); if (!empty($updatedIncludedGoogleAudienceGroup)) { // Get existing settings. $updatedGoogleAudienceSettings = $updatedIncludedGoogleAudienceGroup->getSettings(); // Add new Google audiences to existing list. $updatedGoogleAudienceSettings = array_merge( $updatedGoogleAudienceSettings, $newGoogleAudienceSettings ); // Set updated Google audience list. $updatedIncludedGoogleAudienceGroup ->setSettings($updatedGoogleAudienceSettings); } else { // Create new Google audience group. $updatedIncludedGoogleAudienceGroup = new Google_Service_DisplayVideo_GoogleAudienceGroup(); // Set list of new Google audiences for targeting. $updatedIncludedGoogleAudienceGroup ->setSettings($newGoogleAudienceSettings); } // Add new Google Audience group to audience group targeting details. $updatedAudienceGroupDetails ->setIncludedGoogleAudienceGroup( $updatedIncludedGoogleAudienceGroup ); // Create new targeting option to assign. $newAudienceGroupTargeting = new Google_Service_DisplayVideo_AssignedTargetingOption(); $newAudienceGroupTargeting ->setAudienceGroupDetails($updatedAudienceGroupDetails); // Build audience group targeting create request and add to list of // create requests. $createAudienceGroupAssignedTargetingOptions = array(); $createAudienceGroupAssignedTargetingOptions[] = $newAudienceGroupTargeting; $createAudienceGroupTargetingRequest = new Google_Service_DisplayVideo_CreateAssignedTargetingOptionsRequest(); $createAudienceGroupTargetingRequest->setTargetingType( "TARGETING_TYPE_AUDIENCE_GROUP" ); $createAudienceGroupTargetingRequest->setAssignedTargetingOptions( $createAudienceGroupAssignedTargetingOptions ); $createRequests[] = $createAudienceGroupTargetingRequest; // Set create requests in edit request. $requestBody->setCreateRequests($createRequests); // Call the API, editing the assigned targeting options for the // identified line item. $response = $this ->service ->advertisers_lineItems ->bulkEditLineItemAssignedTargetingOptions( $advertiserId, $lineItemId, $requestBody );
Prepárate para que las opciones de segmentación dejen de estar disponibles
Las opciones de segmentación no son estáticas, y es posible que, de vez en cuando, una pequeña cantidad quede obsoleta. Una vez que las opciones de segmentación dejan de estar disponibles, no afectan la publicación de anuncios de una línea de pedido. Después de la baja, estas opciones se desasignan de los elementos de línea existentes, y las solicitudes que intenten recuperar o asignar estas opciones generarán errores.
Para evitar estos errores, te recomendamos que revises periódicamente los IDs de opciones de segmentación almacenados. Para conservar la cuota, te recomendamos que almacenes en caché los IDs que se usan con frecuencia. Sin embargo, almacenar IDs significa que es posible que no te des cuenta de que una opción de segmentación dejó de estar disponible. Por este motivo, debes usar targetingOptions.targetingTypes.get
con frecuencia para recuperar todos los IDs de opciones de segmentación almacenados y confirmar que Display & Video 360 aún los admita.
Consulta nuestra página Bajas anunciadas para obtener detalles sobre las bajas anteriores y próximas significativas.
No realices solicitudes simultáneas para actualizar el mismo elemento de una sola línea.
Si intentas actualizar la configuración o la segmentación asignada de una sola línea de pedido con varias solicitudes simultáneas, se mostrará un error. Entre las solicitudes aplicables, se incluyen las siguientes:
advertisers.lineItems.bulkEditAssignedTargetingOptions
advertisers.lineItems.bulkUpdate
advertisers.lineItems.patch
advertisers.lineItems.targetingTypes.assignedTargetingOptions.create
advertisers.lineItems.targetingTypes.assignedTargetingOptions.delete
Si necesitas agregar o quitar varias opciones de segmentación asignadas para un solo elemento de línea al mismo tiempo, debes usar una sola solicitud advertisers.lineItems.bulkEditAssignedTargetingOptions
. Si deseas actualizar la configuración y la segmentación de una línea de pedido, coloca en cola la solicitud patch
o bulkUpdate
y la solicitud de segmentación relevante para asegurarte de que la segunda solicitud no se envíe hasta que la primera devuelva una respuesta.