La gestion du ciblage des ressources est une fonctionnalité essentielle de l'API Display & Video 360. Le ciblage peut être attribué à plusieurs types de ressources et utilise un certain nombre d'autres ressources et espaces d'ID. Cette page décrit les limites à prendre en compte et les bonnes pratiques à mettre en œuvre lorsque vous adoptez les services d'options de ciblage attribuées de l'API Display & Video 360.
Utiliser l'héritage du ciblage
Le ciblage attribué à certaines ressources peut être hérité par leurs ressources enfants. Les options de ciblage héritées par une ressource enfant peuvent être récupérées, mais ne peuvent pas être modifiées au niveau de la ressource enfant. Cela permet d'appliquer les paramètres de brand safety et d'autres types de ciblage à l'ensemble d'un partenaire ou d'un annonceur.
Le chemin d'héritage est illustré dans le schéma ci-dessous :

Comme indiqué dans le diagramme, certains niveaux de ciblage n'acceptent qu'un sous-ensemble de types de ciblage. Cela signifie que certaines options de ciblage ne peuvent pas être définies à des niveaux supérieurs et héritées, mais doivent être définies à un niveau inférieur.
Héritage dans les ressources YouTube et partenaires
L'héritage du ciblage n'est pas reflété pour les ressources YouTube et partenaires dans l'API Display & Video 360. Le ciblage hérité par les groupes d'annonces ne sera pas récupérable au niveau AdGroup, et le ciblage YouTube attribué aux ressources parentes ne sera pas hérité par les ressources enfants.
Pour récupérer tous les paramètres de ciblage fonctionnel d'un groupe d'annonces, vous devez récupérer les options de ciblage attribuées au groupe d'annonces, à l'élément de campagne parent et à l'annonceur parent.
Faites attention au ciblage attribué lors de la création d'un élément de campagne
À l'exception des options de ciblage héritées, la plupart des options de ciblage ne peuvent être attribuées qu'après la création d'un élément de campagne. Toutefois, certains types de ciblage sont associés par défaut à un sous-ensemble de valeurs lors de la création des éléments de campagne. Voici les types de ciblage disponibles :
Toute tentative de création d'options de ciblage existantes ou de suppression d'options de ciblage non existantes renvoie une erreur. Nous vous recommandons donc de connaître l'ensemble des options de ciblage attribuées à vos éléments de campagne lors de leur création. Si vous devez récupérer le ciblage attribué à un élément de campagne pour tous les types de ciblage, utilisez advertisers.lineItems.bulkListAssignedTargetingOptions.
De plus, certains paramètres sont définis par défaut lorsqu'aucune option de ciblage de ce type n'est attribuée à la ressource. Par exemple, si une ressource ne comporte pas d'option de ciblage TARGETING_TYPE_AUTHORIZED_SELLER_STATUS, cela signifie qu'elle utilise l'état "Vendeurs et revendeurs directs autorisés".
Impossible de modifier le ciblage YouTube et partenaires
Il n'est pas possible de mettre à jour le ciblage spécifique aux campagnes YouTube et partenaires à l'aide de l'API Display & Video 360.
Le ciblage YouTube et partenaires comprend tout le ciblage attribué directement aux groupes d'annonces et aux éléments de campagne YouTube et partenaires, ainsi que tout ciblage des types de ciblage suivants :
TARGETING_TYPE_SESSION_POSITIONTARGETING_TYPE_YOUTUBE_CHANNELTARGETING_TYPE_YOUTUBE_VIDEO
Vous pouvez mettre à jour ce ciblage directement dans l'UI Display & Video 360 ou en important un fichier de données structurées.
Attribuer un ciblage d'audience avec une seule option
Les options de ciblage de la plupart des types de ciblage sont attribuées individuellement. Le ciblage de groupe d'audience ne suit pas cette convention modulaire. Il est attribué dans un seul objet configurable audience group targeting details qui liste les ID des audiences à inclure et à exclure lors de la diffusion d'annonces. Une fois attribuée, l'option assignedTargetingOptionId pour ce groupe d'audience est toujours "audienceGroup".
Cela signifie que toute modification du ciblage des groupes d'audience doit être effectuée en supprimant d'abord l'option de ciblage des groupes d'audience existante, puis en créant une nouvelle option de ciblage des groupes d'audience avec les modifications souhaitées. Pour ce faire, vous pouvez utiliser advertisers.lineItems.bulkEditAssignedTargetingOptions dans une seule requête.
Voici un exemple de mise à jour du ciblage d'audience afin de cibler positivement des audiences Google supplémentaires :
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 );
Préparez-vous à la suppression d'options de ciblage
Les options de ciblage ne sont pas statiques. Il est possible que certaines d'entre elles soient abandonnées de temps en temps. Une fois les options de ciblage obsolètes, elles n'affectent pas la diffusion des annonces d'un élément de campagne. Une fois ces options obsolètes, elles seront dissociées des postes budgétaires existants. Les requêtes qui tenteront de les récupérer ou de les attribuer généreront des erreurs.
Pour éviter ces erreurs, nous vous recommandons de vérifier régulièrement les ID des options de ciblage stockées. Pour économiser du quota, nous vous recommandons de mettre en cache les ID fréquemment utilisés. Toutefois, le stockage des ID signifie que vous risquez de ne pas vous rendre compte qu'une option de ciblage a été abandonnée. Pour cette raison, vous devez utiliser régulièrement targetingOptions.targetingTypes.get pour récupérer tous les ID d'options de ciblage stockés et vérifier qu'ils sont toujours compatibles avec Display & Video 360.
Pour en savoir plus sur les abandons importants passés et à venir, consultez notre page Annonces d'abandon.
N'envoyez pas de requêtes simultanées pour mettre à jour le même article.
Si vous essayez de mettre à jour les paramètres ou le ciblage attribué d'un seul élément de campagne à l'aide de plusieurs requêtes simultanées, une erreur s'affichera. Voici quelques exemples de demandes concernées :
advertisers.lineItems.bulkEditAssignedTargetingOptionsadvertisers.lineItems.bulkUpdateadvertisers.lineItems.patchadvertisers.lineItems.targetingTypes.assignedTargetingOptions.createadvertisers.lineItems.targetingTypes.assignedTargetingOptions.delete
Si vous devez ajouter ou supprimer plusieurs options de ciblage attribuées pour un seul élément de campagne en même temps, vous devez utiliser une seule requête advertisers.lineItems.bulkEditAssignedTargetingOptions. Si vous souhaitez mettre à jour les paramètres et le ciblage d'un élément de campagne, mettez en file d'attente la requête patch ou bulkUpdate et la requête de ciblage correspondante pour vous assurer que la deuxième requête n'est pas envoyée tant que la première n'a pas renvoyé de réponse.