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 wykorzystywać wiele innych zasobów oraz przestrzeni identyfikatorów. Na tej stronie znajdziesz szczegółowe informacje o ograniczeniach i zalecanych rozwiązaniach, które warto wdrożyć podczas korzystania z usług opcji docelowania przypisanego interfejsu Display & Video 360 API.
Korzystanie z dziedziczenia kierowania
Docelowy odbiorcy przypisani do niektórych zasobów mogą być dziedziczone przez ich zasoby podrzędne. Opcje kierowania dziedziczone przez zasób podrzędny można pobierać, ale nie można ich edytować na poziomie zasobu podrzędnego. Dzięki temu ustawienia bezpieczeństwa marki i inne ustawienia kierowania są stosowane na całym koncie partnera lub reklamodawcy.
Ścieżka dziedziczenia jest widoczna na poniższym diagramie:
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 i spowodować ich dziedziczenia, ale trzeba je zamiast tego ustawić na niższym poziomie.
Dziedziczenie w zasobach YouTube i partnerów
Dziedziczenie kierowania nie jest uwzględniane w przypadku zasobów typu YouTube i sieć partnerów wideo Google w interfejsie Display & Video 360 API. Kierowanie stosowane przez grupy reklam nie będzie dostępne na poziomie AdGroup
, a kierowanie w YouTube przypisane do zasobów nadrzędnych nie będzie dziedziczone przez zasoby podrzędne.
Aby pobrać wszystkie ustawienia kierowania funkcjonalnego grupy reklam, musisz pobrać przypisane opcje kierowania dla grupy reklam, nadrzędnego elementu zamówienia i nadrzędnego reklamodawcy.
Upewnij się, że kierowanie zostało prawidłowo przypisane podczas tworzenia elementu zamówienia
Poza dziedziczonymi opcjami 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 przypisywanych elementom zamówienia podczas ich tworzenia. Te typy kierowania to:
Próba utworzenia istniejących lub usunięcia nieistniejących opcji kierowania spowoduje wyświetlenie błędu, dlatego zalecamy zapoznanie się z pełnym zestawem opcji kierowania przypisanych do elementów zamówienia po ich utworzeniu. Jeśli chcesz pobrać kierowanie przypisane do elementu zamówienia w różnych typach kierowania, użyj advertisers.lineItems.bulkListAssignedTargetingOptions
.
Ponadto niektóre ustawienia są ustawiane domyślnie, gdy do zasobu nie jest przypisana żadna opcja kierowania tego typu. Jeśli na przykład zasób nie ma zdefiniowanej opcji kierowaniaTARGETING_TYPE_AUTHORIZED_SELLER_STATUS
, oznacza to, że ma stan „Autoryzowani bezpośredni sprzedawcy i sprzedawcy”.
Nie oczekuj automatycznego „kierowania domyślnego”.
W Display & Video 360 kierowanie ustawione na poziomie kampanii lub zamówienia reklamowego nie jest od razu przekazywane do podrzędnych elementów zamówienia. Takie ustawienia kierowania nazywamy „domyślnymi ustawieniami kierowania”. Są one używane jako szablon kierowania, który jest stosowany do elementów zamówienia utworzonych później w interfejsie.
W interfejsie API Display & Video 360 kierowanie domyślne nie jest automatycznie stosowane do nowo utworzonych elementów zamówienia. Podczas tworzenia elementu zamówienia na podstawie podstawowego szablonu nie są kopiowane żadne ustawienia kierowania na poziomie kampanii ani zamówienia reklamowego. W takim przypadku kierowanie musi być stosowane do elementów zamówienia osobno za pomocą opcji kierowania przypisanej do metod tworzenia lub edycji zbiorczej.
Wyjątkiem mogą być metody specjalne. Na przykład elementy zamówienia utworzone za pomocą funkcji advertisers.lineItems.generateDefault
kopiują ustawienia z nadrzędnego zamówienia reklamowego, w tym przypisane kierowanie.
Podobnie elementy zamówienia utworzone przez powtórzenie będą miały takie samo kierowanie jak pierwotny element zamówienia.
Nie można zmodyfikować kierowania na YouTube i partnerów
Kierowania na kampanie w YouTube i sieci partnerów wideo Google nie można aktualizować za pomocą interfejsu API Display & Video 360.
Kierowanie typu „YouTube i sieć partnerów” obejmuje wszystkie ustawienia kierowania przypisane bezpośrednio do elementów zamówienia typu „YouTube i sieć partnerów” oraz grup reklam, a także wszelkie ustawienia kierowania tych typów:
TARGETING_TYPE_SESSION_POSITION
TARGETING_TYPE_YOUTUBE_CHANNEL
TARGETING_TYPE_YOUTUBE_VIDEO
Te ustawienia kierowania możesz zaktualizować bezpośrednio w interfejsie Display & Video 360 lub przesyłając plik uporządkowanych danych.
Przypisywanie kierowania na odbiorców za pomocą jednej opcji
Opcje kierowania w przypadku większości typów kierowania są przypisywane indywidualnie. Kierowanie na grupy odbiorców nie jest zgodne z tą konwencją modułową, ale jest przypisywane w pojedynczym konfigurowalnym obiekcie szczegółów kierowania na grupy odbiorców, który zawiera listę identyfikatorów odbiorców do uwzględnienia i wykluczenia podczas wyświetlania reklam. Wartość assignedTargetingOptionId
dla tej opcji grupy odbiorców, gdy zostanie przypisana, to zawsze „audienceGroup”.
Oznacza to, że każda zmiana kierowania na grupę odbiorców wymaga najpierw usunięcia dotychczasowej opcji kierowania przypisanej do grupy odbiorców, a następnie utworzenia nowej opcji kierowania na grupę odbiorców z wprowadzonymi zmianami. Można to zrobić w ramach pojedynczego zgłoszenia za pomocą advertisers.lineItems.bulkEditAssignedTargetingOptions
.
Oto przykład, jak zaktualizować kierowanie na odbiorców, aby pozytywnie kierować reklamy na dodatkowe grupy 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 i czasami może się zdarzyć, że niektóre z nich zostaną wycofane. Po wycofaniu opcje kierowania nie wpływają na wyświetlanie reklam w elemencie zamówienia. Po wycofaniu te opcje zostaną odłączone od dotychczasowych pozycji linii, a próby ich pobrania lub przypisania spowodują wystąpienie błędów.
Aby uniknąć takich błędów, regularnie sprawdzaj zapisane identyfikatory opcji kierowania. Aby oszczędzać limit, zalecamy zapisywanie w pamięci podręcznej często używanych identyfikatorów. Jednak przechowywanie identyfikatorów może spowodować, że nie zauważysz, że dana opcja kierowania została wycofana. Dlatego regularnie używaj targetingOptions.targetingTypes.get
, aby pobierać wszystkie zapisane identyfikatory opcji kierowania i sprawdzać, czy są one nadal obsługiwane przez Display & Video 360.
Szczegółowe informacje o poważnych wycofanych i przyszłych wycofanych funkcjach znajdziesz na stronie Wycofanie funkcji.
Nie wysyłaj żądań aktualizujących ten sam element zamówienia w tym samym czasie
Próba zaktualizowania ustawień lub przypisanego kierowania pojedynczego elementu zamówienia za pomocą wielu równoczesnych żądań spowoduje wyświetlenie komunikatu o błędzie. Dotyczy to m.in. tych żądań:
advertisers.lineItems.bulkEditAssignedTargetingOptions
advertisers.lineItems.bulkUpdate
advertisers.lineItems.patch
advertisers.lineItems.targetingTypes.assignedTargetingOptions.create
advertisers.lineItems.targetingTypes.assignedTargetingOptions.delete
Jeśli chcesz jednocześnie dodać lub usunąć z jednego produktu w usłudze płatnej kilka przypisanych opcji kierowania, użyj pojedynczego żądania advertisers.lineItems.bulkEditAssignedTargetingOptions
. Jeśli chcesz zaktualizować ustawienia i kierowanie elementu zamówienia, umieść w kole żądanie patch
lub bulkUpdate
oraz odpowiednie żądanie kierowania, aby mieć pewność, że drugie żądanie nie zostanie wysłane, dopóki pierwsze nie zwróci odpowiedzi.