Pengelolaan penargetan resource adalah fitur utama Display & Video 360 API. Penargetan dapat ditetapkan ke beberapa jenis resource dan menggunakan sejumlah resource dan ruang ID lainnya. Halaman ini menjelaskan batasan yang perlu diperhatikan dan praktik terbaik yang harus diterapkan dalam penerapan layanan Opsi Penargetan yang Ditetapkan API Display & Video 360.
Menggunakan pewarisan penargetan
Penargetan yang ditetapkan ke beberapa resource dapat diwarisi oleh resource turunannya. Opsi penargetan yang diwarisi oleh resource turunan dapat diambil, tetapi tidak dapat diedit di tingkat resource turunan. Hal ini memungkinkan setelan keamanan merek dan penargetan lainnya diterapkan di seluruh partner atau pengiklan.
Jalur pewarisan dapat dilihat pada diagram di bawah:
Seperti yang ditentukan dalam diagram, beberapa tingkat penargetan hanya mendukung sebagian jenis penargetan. Artinya, beberapa opsi penargetan tidak dapat ditetapkan pada tingkat yang lebih tinggi dan diwariskan, tetapi harus ditetapkan pada tingkat yang lebih rendah.
Referensi tentang warisan di YouTube & Partner
Pewarisan penargetan tidak tercermin untuk resource YouTube & Partner di
Display & Video 360 API. Penargetan yang diwarisi oleh Grup Iklan tidak akan
dapat diambil di tingkat AdGroup
dan penargetan YouTube
yang ditetapkan ke resource induk tidak akan diwarisi oleh resource turunan.
Untuk mengambil semua setelan penargetan fungsional untuk grup iklan, Anda harus mengambil opsi penargetan yang ditetapkan untuk Grup Iklan, item baris induk, dan pengiklan induk.
Perhatikan penargetan yang ditetapkan saat pembuatan item baris
Selain opsi penargetan yang diwarisi, sebagian besar penargetan hanya dapat ditetapkan setelah item baris dibuat. Namun, ada beberapa jenis penargetan yang memiliki subkumpulan nilai default yang ditetapkan ke item baris saat pembuatan item baris. Jenis penargetan tersebut adalah:
Mencoba membuat opsi penargetan yang ada atau menghapus opsi penargetan yang tidak ada
akan menampilkan error. Jadi, sebaiknya Anda mengetahui rangkaian penargetan lengkap
yang ditetapkan ke item baris Anda saat pembuatan. Jika Anda perlu mengambil penargetan yang ditetapkan ke item baris di seluruh jenis penargetan, gunakan advertisers.lineItems.bulkListAssignedTargetingOptions
.
Selain itu, beberapa setelan ditetapkan secara default jika tidak ada opsi penargetan
dari jenis tersebut yang ditetapkan ke resource. Misalnya, jika resource tidak memiliki opsi penargetan
TARGETING_TYPE_AUTHORIZED_SELLER_STATUS
yang ditentukan, artinya resource tersebut menggunakan status "Penjual dan Reseller
Langsung Resmi".
Jangan berharap "penargetan default" otomatis
Di Display & Video 360, penargetan yang ditetapkan di tingkat kampanye atau pesanan pemasangan iklan tidak langsung diteruskan ke item baris turunannya. Penargetan ini dikenal sebagai "penargetan default" dan digunakan sebagai template penargetan yang diterapkan ke item baris yang kemudian dibuat di UI.
Di Display & Video 360 API, penargetan default tidak otomatis diterapkan ke item baris yang baru dibuat. Pembuatan item baris dasar tidak menyalin penargetan tingkat pesanan pemasangan iklan atau tingkat kampanye. Dalam hal ini, penargetan harus diterapkan ke item baris secara terpisah melalui metode buat atau edit massal opsi penargetan yang ditetapkan.
Metode khusus dapat menjadi pengecualian. Misalnya, item baris yang dibuat melalui
setelan salin
advertisers.lineItems.generateDefault
dari perjanjian pemasangan iklan induknya, termasuk penargetan yang ditetapkan.
Demikian pula, item baris yang dibuat melalui duplikasi akan diberi penargetan yang sama dengan item baris asli.
Penargetan YouTube & Partner tidak dapat diubah
Penargetan khusus untuk kampanye YouTube & Partner tidak dapat diperbarui menggunakan Display & Video 360 API.
Penargetan YouTube & Partner terdiri dari semua penargetan yang ditetapkan langsung ke Item Baris YouTube & Partner dan Grup Iklan, serta penargetan apa pun dari jenis penargetan berikut:
TARGETING_TYPE_SESSION_POSITION
TARGETING_TYPE_YOUTUBE_CHANNEL
TARGETING_TYPE_YOUTUBE_VIDEO
Penargetan ini dapat diperbarui menggunakan UI Display & Video 360 secara langsung atau dengan mengupload File Data Terstruktur.
Menetapkan penargetan audiens dengan satu opsi
Opsi penargetan untuk sebagian besar jenis penargetan ditetapkan satu per satu. Penargetan
grup audiens tidak mengikuti konvensi modular ini, tetapi ditetapkan
dalam satu objek
detail penargetan grup audiens yang dapat dikonfigurasi yang mencantumkan
ID audiens yang akan disertakan dan dikecualikan saat menayangkan iklan. assignedTargetingOptionId
untuk opsi grup audiens ini, setelah ditetapkan, selalu "audienceGroup".
Desain ini berarti bahwa setiap perubahan pada penargetan grup audiens harus dilakukan dengan
menghapus opsi penargetan yang ditetapkan
untuk grup audiens yang ada terlebih dahulu, lalu membuat opsi penargetan grup audiens
baru dengan perubahan yang diinginkan. Hal ini dapat dilakukan dalam satu permintaan
menggunakan
advertisers.lineItems.bulkEditAssignedTargetingOptions
.
Berikut adalah contoh cara memperbarui penargetan audiens untuk menargetkan audiens Google tambahan secara positif:
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 );
Bersiaplah untuk opsi penargetan yang tidak digunakan lagi
Opsi penargetan tidak statis, dan beberapa opsi mungkin tidak digunakan lagi dari waktu ke waktu. Opsi penargetan, setelah tidak digunakan lagi, tidak memengaruhi penayangan iklan item baris. Setelah penghentian penggunaan, opsi ini tidak akan ditetapkan dari item baris yang ada dan permintaan yang mencoba mengambil atau menetapkan opsi ini akan menyebabkan error.
Untuk menghindari error ini, sebaiknya periksa ID opsi penargetan
yang disimpan secara berkala. Untuk menghemat kuota, sebaiknya simpan dalam cache ID yang digunakan secara rutin. Namun, menyimpan ID berarti Anda mungkin tidak
mengetahui bahwa opsi penargetan telah tidak digunakan lagi. Oleh karena itu, Anda harus
menggunakan targetingOptions.targetingTypes.get
secara rutin untuk
mengambil semua ID opsi penargetan yang disimpan guna mengonfirmasi bahwa ID tersebut masih
didukung oleh Display & Video 360.
Lihat halaman Penghentian Penggunaan yang Diumumkan untuk mengetahui detail tentang penghentian penggunaan signifikan sebelumnya dan mendatang.
Jangan membuat permintaan serentak yang memperbarui item baris yang sama
Mencoba memperbarui setelan atau penargetan yang ditetapkan untuk satu item baris menggunakan beberapa permintaan serentak akan menampilkan error. Permintaan yang berlaku meliputi:
advertisers.lineItems.bulkEditAssignedTargetingOptions
advertisers.lineItems.bulkUpdate
advertisers.lineItems.patch
advertisers.lineItems.targetingTypes.assignedTargetingOptions.create
advertisers.lineItems.targetingTypes.assignedTargetingOptions.delete
Jika perlu menambahkan atau menghapus beberapa opsi penargetan yang ditetapkan untuk satu
item baris secara bersamaan, Anda harus menggunakan satu
permintaan
advertisers.lineItems.bulkEditAssignedTargetingOptions
. Jika Anda ingin memperbarui setelan dan penargetan item baris, antrekan
permintaan patch
atau bulkUpdate
dan permintaan penargetan
yang relevan untuk memastikan permintaan kedua tidak dikirim hingga permintaan pertama
menampilkan respons.