Hedefleme

Kaynak hedeflemenin yönetimi, Display & Video 360 API'sinin temel bir özelliğidir. Hedefleme, birden fazla kaynak türüne atanabilir ve bir dizi başka kaynak ve kimlik alanından yararlanır. Bu sayfada, Display & Video 360 API Atanan Hedefleme Seçenekleri hizmetlerini kullanımınızda göz önünde bulundurmanız gereken en iyi uygulamaları ve dikkat edilmesi gereken en iyi uygulamaları bulabilirsiniz.

Hedefleme devralma özelliğini kullanma

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, marka güvenliği ayarlarının ve diğer hedeflemenin bir iş ortağı veya reklamveren genelinde uygulanmasını sağlar.

Devralma yolu aşağıdaki şemada görülebilir:

Hedefleme devralma şeması

Şemada belirtildiği gibi bazı hedefleme düzeyleri, hedefleme türlerinin yalnızca bir alt kümesini destekler. Bu, bazı hedefleme seçeneklerinin daha üst düzeylerde ayarlanamayacağı ve devralınamayacağı, bunun yerine daha düşük bir düzeyde ayarlanması gerektiği anlamına gelir.

YouTube ve İş Ortakları kaynaklarında devralma

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

Bir reklam grubuna ilişkin tüm işlevsel hedefleme ayarlarını geri almak istiyorsanız Reklam Grubu, üst satır öğesi ve üst reklamveren için atanan hedefleme seçeneklerini almanız gerekir.

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

Devralınan hedefleme seçenekleri dışında çoğu hedefleme yalnızca bir satır öğesi oluşturulduktan sonra atanabilir. Bununla birlikte, satır öğesi oluşturulurken satır öğelerine varsayılan olarak atanan değer alt kümelerine sahip birkaç hedefleme türü vardır. Bu hedefleme türleri şunlardır:

Mevcut olmayan atanmış hedefleme seçeneklerini oluşturmaya veya silmeye çalışmak hata döndürür. Bu nedenle, oluşturma sırasında satır öğelerinize atanan hedefleme paketinin tamamına dikkat etmenizi öneririz. Hedefleme türlerinde bir satır öğesine atanan hedeflemeyi geri almanız gerekirse advertisers.lineItems.bulkListAssignedTargetingOptions değerini kullanın.

Ayrıca, kaynağa bu türden herhangi bir hedefleme seçeneği atanmadığında bazı ayarlar varsayılan olarak ayarlanır. Örneğin, bir kaynakta TARGETING_TYPE_AUTHORIZED_SELLER_STATUS hedefleme seçeneği tanımlanmamışsa "Yetkili Doğrudan Satıcılar ve Bayiler" durumu kullanılır.

Otomatik "varsayılan hedefleme" beklemeyin

Display & Video 360'ta kampanya veya kampanya siparişi seviyesinde ayarlanan hedefleme, alt satır öğelerine hemen iletilmez. Bu hedefleme, "varsayılan hedefleme" olarak bilinir ve daha sonra kullanıcı arayüzünde oluşturulan satır öğelerine uygulanan bir hedefleme şablonu olarak kullanılır.

Display & Video 360 API'de varsayılan hedefleme yeni oluşturulan satır öğelerine otomatik olarak uygulanmaz. Temel satır öğesi oluşturma işlemi, herhangi bir kampanya veya kampanya siparişi seviyesinde hedeflemeyi kopyalamaz. Bu durumda, istenen hedeflemenin atanan hedefleme seçeneği oluşturma veya toplu düzenleme yöntemleri aracılığıyla satır öğelerine ayrı olarak uygulanması gerekir.

Özel yöntemler istisna olabilir. Örneğin, advertisers.lineItems.generateDefault ile oluşturulan satır öğeleri, atanan hedefleme dahil olmak üzere üst kampanya siparişlerinden ayarları kopyalar. Benzer şekilde, çoğaltma yoluyla oluşturulan satır öğelerine orijinal satır öğesiyle aynı hedefleme atanır.

YouTube ve İş Ortakları hedeflemesi değiştirilemez

Özel olarak YouTube ve İş Ortakları kampanyalarına yönelik hedefleme, Display & Video 360 API kullanılarak güncellenemez.

YouTube ve İş Ortakları hedefleme, doğrudan YouTube ve İş Ortakları Satır Öğeleri 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 atayın

Çoğu hedefleme türü için hedefleme seçenekleri ayrı olarak atanır. Kitle grubu hedeflemesi bu modüler kurala uymaz; bunun yerine, reklam yayınlanırken dahil edilecek ve hariç tutulacak kitlelerin kimliklerini listeleyen tek, yapılandırılabilir bir 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 hedeflemesinde yapılan tüm değişikliklerin önce mevcut kitle grubu atanmış hedefleme seçeneğini silerek ve ardından istenen değişikliklerle yeni bir kitle grubu hedefleme seçeneği oluşturularak yapılması gerektiği anlamına gelir. Bu, advertisers.lineItems.bulkEditAssignedTargetingOptions kullanılarak tek bir istekte gerçekleştirilebilir.

Aşağıda, ek Google kitlelerini pozitif olarak 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 kullanımdan kaldırılmasına hazırlıklı olun

Hedefleme seçenekleri sabit değildir ve zaman zaman az sayıda hedefleme kullanımdan kaldırılabilir. Hedefleme seçenekleri, kullanımdan kaldırıldıktan sonra satır öğesinin reklam sunumunu etkilemez. Kullanımdan kaldırıldıktan sonra, bu seçeneklerin mevcut satır öğelerinden ataması kaldırılacak ve bu seçenekleri almaya veya atamaya çalışan istekler hatalara neden olacaktır.

Bu hataları önlemek için depolanmış hedefleme seçeneği kimliklerini düzenli olarak kontrol etmenizi öneririz. Kotadan tasarruf etmek için düzenli kullanılan kimlikleri önbelleğe almanızı öneririz. Bununla birlikte, kimlikleri depolamak, bir hedefleme seçeneğinin kullanımdan kaldırıldığını fark edemeyebileceğiniz anlamına gelir. Bu nedenle, Display & Video 360 tarafından hâlâ desteklendiğini doğrulamak için depolanan tüm hedefleme seçeneği kimliklerini almak için düzenli olarak targetingOptions.targetingTypes.get kullanmanız gerekir.

Önceki ve yakında yapılacak önemli kullanımdan kaldırma işlemleri hakkında ayrıntılı bilgi için Duyurulan Kullanımdan Kaldırma İşlemleri sayfamıza bakın.

Aynı satır öğesini güncelleyen eşzamanlı isteklerde bulunmayın

Birden fazla eşzamanlı istek kullanarak tek bir satır öğesinin ayarlarını veya atanan hedeflemesini güncellemeye çalışıldığında hata döndürülür. Geçerli istekler şunlardır:

Tek bir satır öğesi için aynı anda birden çok atanmış hedefleme seçeneğini 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 ilk kişi yanıt verene kadar ikinci isteğin gönderilmediğinden emin olmak için patch veya bulkUpdate isteğini ve ilgili hedefleme isteğini sıraya ekleyin.