타겟팅

리소스 타겟팅 관리는 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 타겟팅 옵션이 정의되어 있지 않으면 '승인된 직접 판매자 및 리셀러' 상태를 사용하고 있음을 의미합니다.

자동 '기본 타겟팅' 사용 안함

Display & Video 360에서 캠페인 또는 게재 신청서 수준에서 설정된 타겟팅은 하위 광고 항목으로 즉시 전달되지 않습니다. 이 타겟팅은 '기본 타겟팅'이라고 하며 이후에 UI에서 생성되는 광고 항목에 적용되는 타겟팅 템플릿으로 사용됩니다.

Display & Video 360 API에서 새로 만든 광고 항목에는 기본 타겟팅이 자동으로 적용되지 않습니다. 기본 광고 항목 생성은 캠페인 또는 게재 신청서 수준의 타겟팅을 복사하지 않습니다. 이 경우 할당된 타겟팅 옵션 만들기 또는 일괄 수정 메서드를 통해 원하는 타겟팅을 광고 항목에 별도로 적용해야 합니다.

특수 메서드는 예외일 수 있습니다. 예를 들어 advertisers.lineItems.generateDefault를 통해 생성된 광고 항목은 상위 게재 신청서에서 할당된 타겟팅을 포함한 설정을 복사합니다. 마찬가지로 중복을 통해 생성된 광고 항목에는 원래 광고 항목과 동일한 타겟팅이 할당됩니다.

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

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

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 잠재고객을 포함 방식으로 타겟팅하기 위해 잠재고객 타겟팅을 업데이트하는 방법의 예입니다.

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

2,399필리핀

$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 요청 및 관련 타겟팅 요청을 큐에 추가하여 첫 번째 요청이 응답을 반환할 때까지 두 번째 요청이 전송되지 않도록 합니다.