Kierowanie

Zarządzanie kierowaniem na zasoby to główna funkcja interfejsu Display & Video 360 API. Kierowanie można przypisać do wielu typów zasobów i korzystać z wielu innych zasobów oraz przestrzeni identyfikatorów. Na tej stronie znajdziesz informacje o ograniczeniach, o których warto pamiętać, oraz o sprawdzonych metodach wdrażania usług opcji kierowania przypisanych do interfejsu Display & Video 360 API.

Wykorzystywanie dziedziczenia kierowania

Kierowanie przypisane do niektórych zasobów może być dziedziczone przez ich zasoby podrzędne. Opcje kierowania odziedziczone przez zasób podrzędny można pobrać, ale nie można ich edytować na poziomie zasobu podrzędnego. Dzięki temu ustawienia bezpieczeństwa marki i inne opcje kierowania mogą być egzekwowane w całej witrynie partnera lub reklamodawcy.

Ścieżkę dziedziczenia można zobaczyć na tym schemacie:

Diagram dziedziczenia kierowania

Jak widać na diagramie, niektóre poziomy kierowania obsługują tylko podzbiór typów kierowania. Oznacza to, że niektórych opcji kierowania nie można ustawić na wyższych poziomach ani dziedziczonych, ale należy ustawić je na niższym poziomie.

Dziedziczenie w zasobach dotyczących YouTube i sieci partnerów wideo Google

Dziedziczenie kierowania nie jest odzwierciedlane w przypadku zasobów YouTube i sieci partnerów wideo Google w interfejsie Display & Video 360 API. Nie będzie można pobrać kierowania dziedziczonego przez grupy reklam na poziomie AdGroup, a kierowanie w YouTube przypisane do zasobów nadrzędnych nie będzie dziedziczone przez zasoby podrzędne.

Aby pobrać wszystkie funkcjonalne ustawienia kierowania grupy reklam, musisz pobrać opcje kierowania przypisane dla grupy reklam, nadrzędnego elementu zamówienia i nadrzędnego reklamodawcy.

Pamiętaj o kierowaniu przypisanym podczas tworzenia elementu zamówienia

Oprócz dziedziczonych opcji kierowania większość ustawień kierowania można przypisać dopiero po utworzeniu elementu zamówienia. Jest jednak kilka typów kierowania, które mają domyślny podzbiór wartości przypisywany do elementów zamówienia podczas ich tworzenia. Te typy kierowania to:

Próba utworzenia lub usunięcia nieistniejących przypisanych opcji kierowania zwraca błąd, więc zalecamy, by przy tworzeniu kampanii poznać pełny pakiet kierowania przypisany do elementów zamówienia. Jeśli chcesz pobrać ustawienia kierowania przypisane do elementu zamówienia w różnych typach kierowania, użyj danych advertisers.lineItems.bulkListAssignedTargetingOptions.

Poza tym niektóre ustawienia są ustawiane domyślnie, gdy do zasobu nie zostanie przypisana żadna opcja kierowania tego typu. Jeśli na przykład zasób nie ma zdefiniowanej opcji kierowania TARGETING_TYPE_AUTHORIZED_SELLER_STATUS, oznacza to, że ma stan „Autoryzowani sprzedawcy i sprzedawcy bezpośredni”.

Nie oczekuj automatycznego „kierowania domyślnego”

W Display & Video 360 kierowanie ustawione na poziomie kampanii lub zamówienia reklamowego nie jest natychmiast przekazywane do podrzędnych elementów zamówienia. Jest ono znane jako „kierowanie domyślne” i służy jako szablon kierowania stosowany do elementów zamówienia tworzonych później w interfejsie.

W interfejsie Display & Video 360 API kierowanie domyślne nie jest automatycznie stosowane do nowo tworzonych elementów zamówienia. Podczas tworzenia podstawowego elementu zamówienia nie jest kopiowane żadne kierowanie na poziomie kampanii ani zamówienia reklamowego. W takim przypadku odpowiednie kierowanie należy zastosować do elementów zamówienia oddzielnie za pomocą przypisanych metod kierowania utwórz lub edytuj zbiorczo.

Wyjątkiem mogą być metody specjalne. Na przykład elementy zamówienia utworzone za pomocą advertisers.lineItems.generateDefault kopiują ustawienia z nadrzędnego zamówienia reklamowego, w tym przypisane kierowanie. I podobnie, elementy zamówienia utworzone przez duplikowanie będą miały przypisane te same ustawienia kierowania co pierwotny element zamówienia.

Nie można zmieniać kierowania na YouTube i sieć partnerów wideo Google

Kierowania w kampaniach YouTube i sieci partnerów wideo Google nie można aktualizować za pomocą interfejsu Display & Video 360 API.

Kierowanie na YouTube i sieć partnerów wideo Google obejmuje kierowanie bezpośrednio przypisane do elementów zamówienia YouTube i sieć partnerów wideo Google oraz grupy reklam, a także z dowolnego innego typu kierowania:

  • TARGETING_TYPE_SESSION_POSITION
  • TARGETING_TYPE_YOUTUBE_CHANNEL
  • TARGETING_TYPE_YOUTUBE_VIDEO

Kierowanie możesz zaktualizować bezpośrednio w interfejsie Display & Video 360 lub przez przesłanie pliku uporządkowanych danych.

Przypisywanie kierowania na odbiorców za pomocą jednej opcji

Opcje kierowania dla większości typów kierowania są przypisywane indywidualnie. Kierowanie na grupy odbiorców nie jest zgodne z tą konwencją modułową. Zamiast tego jest przypisywane w pojedynczym, konfigurowalnym obiekcie Audience group targeting details (Szczegóły kierowania grupy odbiorców) zawierającym identyfikatory list odbiorców, które mają być uwzględniane i wykluczane podczas wyświetlania reklam. Po przypisaniu tej opcji grupy odbiorców assignedTargetingOptionId zawsze ma wartość „audienceGroup”.

Oznacza to, że wszelkie zmiany w kierowaniu na grupę odbiorców należy wprowadzić najpierw przez usunięcie dotychczasowej opcji kierowania przypisanej do grupy odbiorców, a potem utworzenie nowej opcji kierowania na grupę odbiorców z odpowiednimi zmianami. Można to zrobić w pojedynczym żądaniu za pomocą advertisers.lineItems.bulkEditAssignedTargetingOptions.

Oto przykład, jak zaktualizować kierowanie na odbiorców z myślą o kierowaniu reklam na dodatkowych odbiorców 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
    );

Przygotuj się na wycofanie opcji kierowania

Opcje kierowania nie są statyczne, a niewielka ich liczba może być okresowo wycofywana. Wycofane opcje kierowania nie wpływają na wyświetlanie reklam z elementu zamówienia. Po ich wycofaniu przypisanie tych opcji zostanie cofnięte, a próby pobrania lub przypisania tych opcji będą powodować błędy.

Aby uniknąć tych błędów, zalecamy regularne sprawdzanie zapisanych identyfikatorów opcji kierowania. Aby zaoszczędzić czas, zalecamy zapisywanie często używanych identyfikatorów w pamięci podręcznej. Jeśli jednak przechowujesz identyfikatory, możesz nie zauważyć, że opcja kierowania została wycofana. Dlatego do pobierania wszystkich zapisanych identyfikatorów opcji kierowania należy regularnie używać funkcji targetingOptions.targetingTypes.get i sprawdzać, czy są one nadal obsługiwane przez Display & Video 360.

Na stronie Ogłoszone wycofywanie znajdziesz szczegółowe informacje o istotnych wcześniejszych i zbliżających się wycofaniach.

Nie wysyłaj żądań równoczesnych do aktualizowania tego samego elementu zamówienia

Próba zmiany ustawień lub przypisanego kierowania w przypadku jednego elementu zamówienia, która korzysta z kilku równoczesnych żądań, spowoduje wyświetlenie błędu. Dotyczy to między innymi:

Jeśli w jednym elemencie zamówienia chcesz dodać lub usunąć jednocześnie wiele przypisanych opcji kierowania, użyj jednego żądania advertisers.lineItems.bulkEditAssignedTargetingOptions. Jeśli chcesz zaktualizować ustawienia i kierowanie elementu zamówienia, umieść w kolejce żądanie patch lub bulkUpdate i odpowiednie żądanie kierowania, aby mieć pewność, że drugie żądanie nie zostanie wysłane, dopóki pierwsze z nich nie zwróci odpowiedzi.