Hedefleme

Kaynak hedeflemenin yönetimi, Display & Video 360 API'nin temel özelliklerinden biridir. Hedefleme, birden fazla kaynak türüne atanabilir ve diğer kaynakların yanı sıra kimlik alanlarından da yararlanır. Bu sayfada, Display & Video 360 API'nin Atanmış Hedefleme Seçenekleri hizmetlerini kullanırken dikkat etmeniz gereken sınırlamalar ve uygulamanız gereken en iyi uygulamalar ayrıntılı olarak açıklanmaktadır.

Hedefleme devralma özelliğinden yararlanma

Bazı kaynaklara atanan hedefleme, alt kaynakları tarafından devralınabilir. Bir alt kaynak tarafından devralınan hedefleme seçenekleri alınabilir ancak alt kaynak düzeyinde düzenlenemez. Bu sayede, marka güvenliği ayarları ve diğer hedefleme seçenekleri bir iş ortağının veya reklamverenin tamamında zorunlu kılınabilir.

Devralma yolu aşağıdaki şemada gösterilmektedir:

Hedefleme devralma diyagramı

Şemada belirtildiği gibi, bazı hedefleme düzeyleri yalnızca hedefleme türlerinin bir alt kümesini destekler. Bu nedenle, bazı hedefleme seçenekleri daha yüksek düzeylerde ayarlanamaz ve devralınamaz. Bunun yerine, daha düşük bir düzeyde ayarlanmaları gerekir.

YouTube ve iş ortakları kaynaklarında devralma

Hedefleme devralma, Display & Video 360 API'deki YouTube ve iş ortakları kaynakları için yansıtılmaz. Reklam grupları tarafından devralınan hedefleme AdGroup düzeyinde alınamaz ve üst kaynaklara atanan YouTube hedefleme alt kaynaklar tarafından devralınmaz.

Bir reklam grubunun tüm işlevsel hedefleme ayarlarını almak için reklam grubu, üst satır öğesi ve üst reklamveren için atanmış hedefleme seçeneklerini almanız gerekir.

Satır öğesi oluşturulurken atanan hedeflemeye dikkat edin.

Devralınan hedefleme seçenekleri dışında, çoğu hedefleme yalnızca bir satır öğesi oluşturulduktan sonra atanabilir. Ancak, satır öğesi oluşturma sırasında satır öğelerine varsayılan bir değer alt kümesi atanmış birkaç hedefleme türü vardır. Bu hedefleme türleri şunlardır:

Mevcut hedefleme seçeneklerini oluşturmaya veya mevcut olmayan atanmış hedefleme seçeneklerini silmeye çalışmak hataya neden olur. Bu nedenle, oluşturma sırasında satır öğelerinize atanan hedefleme paketinin tamamını bilmenizi öneririz. Hedefleme türleri genelinde bir satır öğesine atanan hedeflemeyi almanız gerekiyorsa advertisers.lineItems.bulkListAssignedTargetingOptions kullanın.

Ayrıca, kaynağa bu türden bir hedefleme seçeneği atanmadığında bazı ayarlar varsayılan olarak belirlenir. Örneğin, bir kaynağın tanımlanmış bir TARGETING_TYPE_AUTHORIZED_SELLER_STATUS hedefleme seçeneği yoksa bu, kaynağın "Yetkili doğrudan satıcılar ve bayiler" durumunu kullandığı anlamına gelir.

YouTube ve iş ortakları hedefleme değiştirilemez

Özellikle YouTube ve iş ortakları kampanyaları için hedefleme, Display & Video 360 API kullanılarak güncellenemez.

YouTube ve iş ortakları hedeflemesi, doğrudan YouTube ve iş ortakları satır öğelerine ve reklam gruplarına atanan tüm hedeflemenin yanı sıra aşağıdaki hedefleme türlerinin herhangi bir hedeflemesinden oluşur:

  • TARGETING_TYPE_SESSION_POSITION
  • TARGETING_TYPE_YOUTUBE_CHANNEL
  • TARGETING_TYPE_YOUTUBE_VIDEO

Bu hedefleme, doğrudan Display & Video 360 kullanıcı arayüzü kullanılarak veya yapılandırılmış veri dosyası yüklenerek güncellenebilir.

Tek bir seçenekle kitle hedefleme atama

Çoğu hedefleme türü için hedefleme seçenekleri ayrı ayrı atanır. Kitle grubu hedefleme bu modüler kurala uymaz. Bunun yerine, reklam yayınlarken dahil edilecek ve hariç tutulacak kitlelerin kimliklerini listeleyen tek bir yapılandırılabilir kitle grubu hedefleme ayrıntıları nesnesinde atanır. Bu kitle grubu seçeneği için assignedTargetingOptionId, atandıktan sonra her zaman "audienceGroup" olur.

Bu tasarım, kitle grubu hedeflemede yapılacak herhangi bir değişikliğin önce mevcut kitle grubu hedefleme seçeneği silinerek, ardından istenen değişikliklerin yapıldığı yeni bir kitle grubu hedefleme seçeneği oluşturularak yapılması gerektiği anlamına gelir. Bu işlem, advertisers.lineItems.bulkEditAssignedTargetingOptions kullanılarak tek bir istekte yapılabilir.

Aşağıda, ek Google kitlelerini olumlu bir şekilde hedeflemek için kitle hedeflemenin nasıl güncelleneceğine dair bir örnek verilmiştir:

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
    );

Hedefleme seçeneklerinin desteğinin sonlandırılmasına hazırlanın

Hedefleme seçenekleri statik değildir ve zaman zaman küçük bir kısmı kullanımdan kaldırılabilir. Desteği sonlandırılan hedefleme seçenekleri, satır öğesinin reklam yayınını etkilemez. Desteği sonlandırıldıktan sonra bu seçeneklerin mevcut satır öğeleriyle ilişkisi kaldırılacak ve bu seçenekleri almaya veya atamaya çalışan istekler hatayla sonuçlanacaktır.

Bu hataları önlemek için kayıtlı hedefleme seçeneği kimliklerini düzenli olarak kontrol etmenizi öneririz. Kota tasarrufu için sık kullanılan kimlikleri düzenli olarak önbelleğe almanızı öneririz. Ancak kimliklerin depolanması, bir hedefleme seçeneğinin desteğinin sonlandırıldığını fark etmemenize neden olabilir. Bu nedenle, depolanan tüm hedefleme seçeneği kimliklerini alıp Display & Video 360 tarafından hâlâ desteklendiğini doğrulamak için targetingOptions.targetingTypes.get'ı düzenli olarak kullanmanız gerekir.

Önemli önceki ve yaklaşan kullanımdan kaldırmalarla ilgili ayrıntılar için Duyurulan Kullanımdan Kaldırmalar sayfamızı inceleyin.

Aynı satır öğesini güncelleyen eşzamanlı istekler göndermeyin

Tek bir satır öğesinin ayarlarını veya atanan hedeflemesini birden fazla eşzamanlı istekle güncellemeye çalışmak hata döndürür. Geçerli istekler şunlardır:

Tek bir satır öğesi için aynı anda birden fazla atanmış hedefleme seçeneği eklemeniz veya kaldırmanız gerekiyorsa tek bir advertisers.lineItems.bulkEditAssignedTargetingOptions isteği kullanmanız gerekir. Bir satır öğesinin ayarlarını ve hedeflemesini güncellemek istiyorsanız patch veya bulkUpdate isteğini ve ilgili hedefleme isteğini sıraya alın. Böylece, ilk istek yanıt döndürene kadar ikinci istek gönderilmez.