Targeting

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:

Diagram pewarisan penargetan

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:

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.