Penargetan

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 untuk diterapkan dalam penggunaan layanan Opsi Penargetan yang Ditetapkan di Display & Video 360 API.

Memanfaatkan 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 pada tingkat resource turunan. Hal ini memungkinkan setelan keamanan merek dan penargetan lainnya diterapkan di seluruh partner atau pengiklan.

Jalur pewarisan dapat dilihat dalam diagram di bawah:

Diagram pewarisan penargetan

Seperti yang ditentukan dalam diagram, beberapa tingkat penargetan hanya mendukung subkumpulan jenis penargetan. Artinya, beberapa opsi penargetan tidak dapat ditetapkan pada tingkat yang lebih tinggi dan diwariskan, tetapi harus ditetapkan pada tingkat yang lebih rendah.

Pewarisan di referensi YouTube & Partner

Pewarisan penargetan tidak ditampilkan untuk resource YouTube & Partners di Display & Video 360 API. Penargetan yang diwarisi oleh Grup Iklan tidak akan dapat diambil pada tingkat AdGroup dan penargetan YouTube yang ditetapkan ke resource induk tidak akan diwarisi oleh resource turunan.

Untuk mengambil semua setelan penargetan yang berfungsi 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 subset nilai default yang ditetapkan ke item baris saat pembuatan item baris. Jenis penargetan tersebut adalah:

Mencoba membuat atau menghapus opsi penargetan yang ditetapkan dan tidak ada akan menghasilkan error. Jadi, sebaiknya Anda mengetahui rangkaian penargetan lengkap yang ditetapkan ke item baris Anda setelah pembuatan. Jika Anda perlu mengambil penargetan yang ditetapkan ke item baris di seluruh jenis penargetan, gunakan advertisers.lineItems.bulkListAssignedTargetingOptions.

Selain itu, beberapa setelan akan ditetapkan secara default jika tidak ada opsi penargetan dengan jenis tersebut yang ditetapkan ke resource. Misalnya, jika resource tidak menentukan opsi penargetan TARGETING_TYPE_AUTHORIZED_SELLER_STATUS, artinya resource tersebut menggunakan status "Authorized Direct Penjual dan Reseller".

Jangan mengharapkan "penargetan default" otomatis

Di Display & Video 360, penargetan yang ditetapkan di tingkat kampanye atau perjanjian pemasangan iklan tidak segera diteruskan ke item baris turunannya. Penargetan ini dikenal sebagai "penargetan default" dan digunakan sebagai template penargetan yang diterapkan ke item baris yang selanjutnya 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 perjanjian pemasangan iklan atau kampanye apa pun. Dalam hal ini, penargetan yang diinginkan harus diterapkan ke item baris secara terpisah melalui metode buat atau edit massal dengan opsi penargetan yang ditetapkan.

Metode khusus dapat menjadi pengecualian. Misalnya, item baris yang dibuat melalui advertisers.lineItems.generateDefault menyalin setelan dari perjanjian pemasangan iklan induknya, termasuk penargetan yang ditetapkan. Demikian pula, item baris yang dibuat melalui duplikasi akan diberi penargetan yang sama seperti 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 & Partners terdiri dari semua penargetan yang ditetapkan langsung ke Item Baris dan Grup Iklan YouTube & Partners, 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.

Tetapkan 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 dan mencantumkan ID audiens yang akan disertakan dan dikecualikan saat menayangkan iklan. Opsi assignedTargetingOptionId untuk 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 ke 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 jika opsi penargetan tidak digunakan lagi

Opsi penargetan tidak bersifat statis, dan sejumlah kecil mungkin tidak digunakan lagi dari waktu ke waktu. Opsi penargetan, setelah tidak digunakan lagi, tidak memengaruhi penayangan iklan item baris. Setelah dihentikan, opsi ini akan dibatalkan penetapannya dari item baris yang ada, dan permintaan yang mencoba mengambil atau menetapkan opsi ini akan mengakibatkan error.

Untuk menghindari error ini, sebaiknya periksa ID opsi penargetan yang tersimpan secara rutin. Untuk menghemat kuota, sebaiknya Anda menyimpan ID yang digunakan secara rutin ke dalam cache. Namun, menyimpan ID berarti Anda mungkin tidak menyadari bahwa opsi penargetan sudah tidak digunakan lagi. Karena alasan ini, Anda harus menggunakan targetingOptions.targetingTypes.get secara rutin untuk mengambil semua ID opsi penargetan yang tersimpan guna mengonfirmasi bahwa ID tersebut masih didukung oleh Display & Video 360.

Buka halaman Penghentian Penggunaan yang Diumumkan untuk mengetahui detail tentang penghentian yang signifikan sebelumnya dan yang akan datang.

Jangan membuat permintaan serentak untuk memperbarui item baris yang sama

Mencoba memperbarui setelan atau menetapkan penargetan untuk satu item baris menggunakan beberapa permintaan serentak akan menampilkan error. Permintaan yang berlaku meliputi:

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.