Targeting

리소스 타겟팅 관리는 Display & Video 360 API의 핵심 기능입니다. 타겟팅은 여러 리소스 유형에 할당될 수 있으며 여러 다른 리소스와 ID 스페이스를 활용합니다. 이 페이지에서는 Display & Video 360 API 할당된 타겟팅 옵션 서비스를 채택할 때 유의해야 할 제한사항과 구현해야 할 권장사항을 자세히 설명합니다.

타겟팅 상속 활용

일부 리소스에 할당된 타겟팅은 하위 리소스에서 상속할 수 있습니다. 하위 리소스에서 상속된 타겟팅 옵션은 검색할 수 있지만 하위 리소스 수준에서 수정할 수는 없습니다. 이를 통해 브랜드 안정성 설정 및 기타 타겟팅이 파트너 또는 광고주 전체에 적용될 수 있습니다.

상속 경로는 아래 다이어그램에서 확인할 수 있습니다.

타겟팅 상속 다이어그램

다이어그램에 명시된 대로 일부 타겟팅 수준은 일부 타겟팅 유형만 지원합니다. 즉, 일부 타겟팅 옵션은 상위 수준에서 설정하고 상속받을 수 없으며 하위 수준에서 설정해야 합니다.

YouTube 및 파트너 리소스의 상속

타겟팅 상속은 Display & Video 360 API의 YouTube + 파트너 리소스에 반영되지 않습니다. 광고 그룹에서 상속된 타겟팅은 AdGroup 수준에서 검색할 수 없으며 상위 리소스에 할당된 YouTube 타겟팅은 하위 리소스에서 상속되지 않습니다.

광고 그룹의 모든 기능 타겟팅 설정을 가져오려면 광고 그룹, 상위 광고 항목, 상위 광고주에 할당된 타겟팅 옵션을 가져와야 합니다.

광고 항목 생성 시 할당된 타겟팅에 유의

상속된 타겟팅 옵션을 제외하고 대부분의 타겟팅은 광고 항목이 생성된 후에만 할당할 수 있습니다. 하지만 광고 항목 생성 시 광고 항목에 기본값의 하위 집합이 할당되는 타겟팅 유형이 몇 가지 있습니다. 다음과 같은 타겟팅 유형이 있습니다.

기존 타겟팅 옵션을 만들거나 존재하지 않는 할당된 타겟팅 옵션을 삭제하려고 하면 오류가 반환되므로 생성 시 광고 항목에 할당된 전체 타겟팅 모음을 파악하는 것이 좋습니다. 타겟팅 유형 전반에서 광고 항목에 할당된 타겟팅을 가져와야 하는 경우 advertisers.lineItems.bulkListAssignedTargetingOptions를 사용하세요.

또한 해당 유형의 타겟팅 옵션이 리소스에 할당되지 않은 경우 일부 설정은 기본적으로 설정됩니다. 예를 들어 리소스에 TARGETING_TYPE_AUTHORIZED_SELLER_STATUS 타겟팅 옵션이 정의되어 있지 않으면 '승인된 직접 판매자 및 리셀러' 상태를 사용하고 있음을 의미합니다.

YouTube + 파트너 타겟팅은 수정할 수 없습니다.

Display & Video 360 API를 사용하여 YouTube + 파트너 캠페인 전용 타겟팅을 업데이트할 수 없습니다.

YouTube + 파트너 타겟팅은 YouTube + 파트너 광고 항목 및 광고 그룹에 직접 할당된 모든 타겟팅과 다음 타겟팅 유형의 모든 타겟팅으로 구성됩니다.

  • TARGETING_TYPE_SESSION_POSITION
  • TARGETING_TYPE_YOUTUBE_CHANNEL
  • TARGETING_TYPE_YOUTUBE_VIDEO

이 타겟팅은 Display & Video 360 UI를 직접 사용하거나 구조화된 데이터 파일을 업로드하여 업데이트할 수 있습니다.

단일 옵션으로 잠재고객 타겟팅 할당

대부분의 타겟팅 유형의 타겟팅 옵션은 개별적으로 할당됩니다. 잠재고객 그룹 타겟팅은 이 모듈식 규칙을 따르지 않고 대신 광고를 게재할 때 포함하고 제외할 잠재고객의 ID를 나열하는 단일 구성 가능한 잠재고객 그룹 타겟팅 세부정보 객체에 할당됩니다. 이 잠재고객 그룹 옵션의 assignedTargetingOptionId은 할당되면 항상 'audienceGroup'입니다.

이 설계에 따라 잠재고객 그룹 타겟팅을 변경하려면 먼저 할당된 기존 잠재고객 그룹 타겟팅 옵션을 삭제한 다음 원하는 변경사항이 적용된 새 잠재고객 그룹 타겟팅 옵션을 만들어야 합니다. 이 작업은 advertisers.lineItems.bulkEditAssignedTargetingOptions를 사용하여 단일 요청으로 실행할 수 있습니다.

다음은 추가 Google 잠재고객을 긍정적으로 타겟팅하기 위해 잠재고객 타겟팅을 업데이트하는 방법의 예입니다.

자바

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

타겟팅 옵션이 지원 중단될 수 있음에 유의하세요

타겟팅 옵션은 정적이지 않으며 일부는 때때로 지원 중단될 수 있습니다. 지원 중단된 타겟팅 옵션은 광고 항목의 광고 게재에 영향을 주지 않습니다. 지원 중단 후 이러한 옵션은 기존 광고 항목에서 할당 해제되며 이러한 옵션을 가져오거나 할당하려고 하면 오류가 발생합니다.

이러한 오류를 방지하려면 저장된 타겟팅 옵션 ID를 정기적으로 확인하는 것이 좋습니다. 할당량을 절약하려면 자주 사용하는 ID를 캐시하는 것이 좋습니다. 하지만 ID를 저장하면 타겟팅 옵션이 지원 중단되었음을 알지 못할 수 있습니다. 따라서 targetingOptions.targetingTypes.get을 정기적으로 사용하여 저장된 모든 타겟팅 옵션 ID를 가져와 Display & Video 360에서 계속 지원되는지 확인해야 합니다.

이전 및 예정된 주요 지원 중단에 대한 자세한 내용은 공지된 지원 중단 페이지를 참고하세요.

동일한 품목을 업데이트하는 동시 요청을 하지 마세요.

동시 요청을 여러 개 사용하여 단일 광고 항목의 설정 또는 할당된 타겟팅을 업데이트하려고 하면 오류가 반환됩니다. 적용 가능한 요청은 다음과 같습니다.

단일 광고 항목에 할당된 타겟팅 옵션을 동시에 여러 개 추가하거나 삭제해야 하는 경우 단일 advertisers.lineItems.bulkEditAssignedTargetingOptions 요청을 사용해야 합니다. 광고 항목의 설정과 타겟팅을 업데이트하려면 patch 또는 bulkUpdate 요청과 관련 타겟팅 요청을 대기열에 추가하여 첫 번째 요청이 응답을 반환할 때까지 두 번째 요청이 전송되지 않도록 합니다.