Targeting

La gestione del targeting delle risorse è una funzionalità centrale dell'API Display & Video 360. Il targeting può essere assegnato a più tipi di risorse e utilizza una serie di altre risorse e spazi ID. Questa pagina descrive le limitazioni da notare e le best practice da implementare nell'adozione dei servizi delle opzioni di targeting assegnate dell'API di Display & Video 360.

Utilizzare l'ereditarietà del targeting

Il targeting assegnato ad alcune risorse può essere ereditato dalle rispettive risorse figlio. Le opzioni di targeting ereditate da una risorsa figlio possono essere recuperate, ma non modificabili a livello di risorsa secondaria. Ciò consente di applicare le impostazioni di sicurezza del brand e altri tipi di targeting a tutto un partner o inserzionista.

Il percorso di ereditarietà è visibile nel diagramma seguente:

Diagramma dell'ereditarietà del targeting

Come specificato nel diagramma, alcuni livelli di targeting supportano solo un sottoinsieme di tipi di targeting. Ciò significa che alcune opzioni di targeting non possono essere impostate a livelli superiori ed ereditate, ma devono invece essere impostate a un livello inferiore.

Ereditarietà nelle risorse YouTube e partner

L'ereditarietà del targeting non si riflette per le risorse YouTube e Partners nell'API Display & Video 360. Il targeting ereditato dai gruppi di annunci non sarà recuperabile a livello di AdGroup e il targeting di YouTube assegnato alle risorse principali non verrà ereditato dalle risorse figlio.

Per recuperare tutte le impostazioni di targeting funzionali per un gruppo di annunci, devi recuperare le opzioni di targeting assegnate per il gruppo di annunci, l'elemento pubblicitario principale e l'inserzionista principale.

Tieni presente il targeting assegnato al momento della creazione dell'elemento pubblicitario

A parte le opzioni di targeting ereditate, la maggior parte del targeting può essere assegnata solo dopo la creazione di un elemento pubblicitario. Tuttavia, esistono alcuni tipi di targeting con un sottoinsieme predefinito di valori assegnato agli elementi pubblicitari al momento della loro creazione. Questi tipi di targeting sono:

Il tentativo di creare opzioni di targeting assegnate esistenti o non esistenti restituisce un errore, pertanto ti consigliamo di prestare attenzione alla suite di targeting completa assegnata ai tuoi elementi pubblicitari al momento della creazione. Se devi recuperare il targeting assegnato a un elemento pubblicitario per tutti i tipi di targeting, utilizza advertisers.lineItems.bulkListAssignedTargetingOptions.

Inoltre, alcune impostazioni sono configurate per impostazione predefinita quando nessuna opzione di targeting di quel tipo è assegnata alla risorsa. Ad esempio, se per una risorsa non è stata definita un'opzione di targeting TARGETING_TYPE_AUTHORIZED_SELLER_STATUS, significa che utilizza lo stato "Venditori e rivenditori diretti autorizzati".

Non aspettarti il "targeting predefinito" automatico

In Display & Video 360, il targeting impostato a livello di campagna o di ordine di inserzione non viene trasferito immediatamente agli elementi pubblicitari secondari. Questo targeting è noto come "targeting predefinito" ed è utilizzato come modello di targeting applicato agli elementi pubblicitari creati successivamente nell'interfaccia utente.

Nell'API Display & Video 360, il targeting predefinito non viene applicato automaticamente ai nuovi elementi pubblicitari. La creazione di elementi pubblicitari di base non copia il targeting a livello di campagna o ordine di inserzione. In questo caso, il targeting desiderato deve essere applicato separatamente agli elementi pubblicitari tramite i metodi con opzione di targeting crea o modifica collettiva.

I metodi speciali possono rappresentare un'eccezione. Ad esempio, gli elementi pubblicitari creati tramite advertisers.lineItems.generateDefault copiano le impostazioni dall'ordine di inserzione principale, incluso il targeting assegnato. Allo stesso modo, agli elementi pubblicitari creati tramite duplicazione verrà assegnato lo stesso targeting dell'elemento pubblicitario originale.

Il targeting di YouTube e partner non può essere modificato

Il targeting specifico per campagne YouTube & Partners non può essere aggiornato utilizzando l'API Display & Video 360.

Il targeting YouTube e partner consiste in tutto il targeting assegnato direttamente agli elementi pubblicitari e ai gruppi di annunci YouTube e partner, nonché a qualsiasi targeting dei seguenti tipi di targeting:

  • TARGETING_TYPE_SESSION_POSITION
  • TARGETING_TYPE_YOUTUBE_CHANNEL
  • TARGETING_TYPE_YOUTUBE_VIDEO

Questo targeting può essere aggiornato utilizzando direttamente l'interfaccia utente di Display & Video 360 o caricando un file di dati strutturati.

Assegna il targeting per pubblico con una singola opzione

Le opzioni di targeting per la maggior parte dei tipi di targeting vengono assegnate singolarmente. Il targeting per gruppo di segmenti di pubblico non segue questa convenzione modulare, bensì viene assegnato in un singolo oggetto dettagli di targeting per gruppo di pubblico configurabile che elenca gli ID dei segmenti di pubblico da includere ed escludere durante la pubblicazione degli annunci. Una volta assegnata, l'opzione assignedTargetingOptionId di questo gruppo di pubblico è sempre "audienceGroup".

In questo modo, qualsiasi modifica al targeting del gruppo di pubblico deve essere apportata eliminando prima l'opzione di targeting assegnata al gruppo di pubblico esistente e poi creando una nuova opzione di targeting per gruppo di pubblico con le modifiche desiderate. Puoi farlo in una singola richiesta utilizzando advertisers.lineItems.bulkEditAssignedTargetingOptions.

Ecco un esempio di come aggiornare il targeting per pubblico in modo da scegliere come target altri segmenti di pubblico di 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
    );

Prepararsi al ritiro delle opzioni di targeting

Le opzioni di targeting non sono statiche e un numero ridotto potrebbe essere di volta in volta deprecato. Una volta ritirate, le opzioni di targeting non influiscono sulla pubblicazione degli annunci di un elemento pubblicitario. Dopo il ritiro, l'assegnazione di queste opzioni agli elementi pubblicitari esistenti verrà annullata e le richieste che tentano di recuperarle o assegnarle causeranno errori.

Per evitare questi errori, ti consigliamo di controllare regolarmente gli ID delle opzioni di targeting memorizzati. Per risparmiare quota, ti consigliamo di memorizzare nella cache gli ID utilizzati regolarmente. Tuttavia, archiviare gli ID significa che potresti non renderti conto che un'opzione di targeting è stata ritirata. Per questo motivo, devi utilizzare regolarmente targetingOptions.targetingTypes.get per recuperare tutti gli ID opzione di targeting memorizzati e confermare che siano ancora supportati da Display & Video 360.

Per informazioni dettagliate su ritiri significativi precedenti e futuri, consulta la pagina Annunciati ritiri.

Non effettuare richieste in parallelo aggiornando lo stesso elemento pubblicitario

Se tenti di aggiornare le impostazioni o il targeting assegnato per un singolo elemento pubblicitario utilizzando più richieste in parallelo verrà restituito un errore. Le richieste applicabili includono:

Se devi aggiungere o rimuovere contemporaneamente più opzioni di targeting assegnate per un singolo elemento pubblicitario, devi utilizzare una singola richiesta advertisers.lineItems.bulkEditAssignedTargetingOptions. Se vuoi aggiornare le impostazioni e il targeting di un elemento pubblicitario, metti in coda la richiesta patch o bulkUpdate e la richiesta di targeting pertinente per assicurarti che la seconda richiesta non venga inviata finché la prima non restituisce una risposta.