타겟팅 설정

타겟팅 옵션, 할당된 타겟팅 옵션, 광고 항목 서비스는 모두 Display & Video 360 API에서 광고 항목 타겟팅을 설정하는 데 사용됩니다. 이 페이지에서는 사용 가능한 타겟팅 옵션을 찾고, 광고 항목에 타겟팅 옵션을 할당하고, 광고 항목에 대한 일괄 작업을 실행하여 할당된 타겟팅 옵션을 나열하고 수정하는 방법을 설명하고 예를 제공합니다.

사용 가능한 타겟팅 옵션 찾기

타겟팅 옵션은 사용자 지정 변수, 타겟팅 가능한 기존 항목 또는 기존 옵션을 사용하여 원하는 타겟층을 정의합니다. 기존 옵션은 타겟팅 유형에 따라 열거형 값 또는 타겟팅 옵션 ID를 사용하여 식별됩니다. 타겟팅 가능한 항목은 항목 ID를 사용하여 식별됩니다. 타겟팅 옵션 ID와 항목 ID는 Display & Video 360 API를 사용하여 찾을 수 있습니다.

설정된 enum 값 사용

다음 타겟팅 유형의 타겟팅 옵션은 특정 enum 유형을 사용하여 할당됩니다.

TargetingType 열거형
TARGETING_TYPE_AGE_RANGE AgeRange
TARGETING_TYPE_CONTENT_INSTREAM_POSITION ContentInstreamPosition
TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION ContentOutstreamPosition
TARGETING_TYPE_DEVICE_TYPE DeviceType
TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION ContentRatingTier
TARGETING_TYPE_ENVIRONMENT Environment
TARGETING_TYPE_EXCHANGE Exchange
TARGETING_TYPE_GENDER Gender
TARGETING_TYPE_HOUSEHOLD_INCOME HouseholdIncome
TARGETING_TYPE_NATIVE_CONTENT_POSITION NativeContentPosition
TARGETING_TYPE_OMID Omid
TARGETING_TYPE_PARENTAL_STATUS ParentalStatus
TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION SensitiveCategory
TARGETING_TYPE_VIDEO_PLAYER_SIZE VideoPlayerSize
TARGETING_TYPE_VIEWABILITY Viewability

관련 enum 값의 문자열 버전은 이러한 타겟팅 유형의 기존 AssignedTargetingOption 리소스를 식별하는 데 사용할 수 있으며 assignedTargetingOptionIdAlias 필드에서 사용할 수 있습니다. 할당된 타겟팅 옵션을 검색하거나 삭제할 때 assignedTargetingOptionId 대신 이 별칭 값을 사용할 수 있습니다.

타겟팅 옵션 ID 검색

기존 옵션을 사용하는 타겟팅 유형은 해당 타겟팅 옵션 ID를 사용하여 할당됩니다.

예를 들어 타겟팅 유형 TARGETING_TYPE_ON_SCREEN_POSITION를 사용하여 타겟팅할 수 있는 화면 위치는 한정되어 있습니다. 이러한 각 위치에는 해당하는 타겟팅 옵션 ID가 있습니다.

이러한 타겟팅 옵션 ID는 타겟팅 옵션 서비스를 통해 가져올 수 있습니다. 검색은 타겟팅 유형에 따라 다음 두 가지 방법 중 하나로 실행됩니다.

  • 개별 검색 또는 전체 목록: getlist 메서드를 사용하여 대다수 타겟팅 유형의 옵션을 가져올 수 있습니다. targetingTypes.targetingOptions.get를 사용하여 타겟팅 유형 및 타겟팅 옵션 ID로 식별되는 타겟팅 옵션의 세부정보를 검색합니다. targetingTypes.targetingOptions.list를 사용하여 지정된 타겟팅 유형에서 사용 가능한 모든 타겟팅 옵션을 나열합니다.
  • 검색: 위치 기반 타겟팅 유형(TARGETING_TYPE_GEO_REGION, TARGETING_TYPE_POI, TARGETING_TYPE_BUSINESS_CHAIN)의 옵션은 search 메서드를 사용하여 가져와야 합니다. targetingTypes.targetingOptions.search를 사용하여 지정된 쿼리 문자열과 일치하는 지정된 유형의 타겟팅 옵션을 검색합니다.

다음은 타겟팅 유형 TARGETING_TYPE_BROWSER에 사용할 수 있는 타겟팅 옵션 목록을 검색하는 방법의 예입니다.

Java

// Configure the list request.
TargetingOptions.List request =
   service
       .targetingTypes()
       .targetingOptions()
       .list("TARGETING_TYPE_BROWSER")
       .setAdvertiserId(advertiser-id);

// Create the response and nextPageToken variables.
ListTargetingOptionsResponse response;
String nextPageToken = null;

do {
 // Create and execute the list request.
 response = request.setPageToken(nextPageToken).execute();

 // Check if the response is empty.
 if (response.isEmpty()) {
   System.out.print("List request returned no Targeting Options");
   break;
 }

 // Iterate over retrieved targeting options.
 for (TargetingOption option : response.getTargetingOptions()) {
   System.out.printf(
       "Targeting Option ID: %s, Browser Display Name: '%s'\n",
       option.getTargetingOptionId(), option.getBrowserDetails().getDisplayName());
 }

 // Update the next page token.
 nextPageToken = response.getNextPageToken();
} while (!Strings.isNullOrEmpty(nextPageToken));

Python

# Create the page token variable.
next_page_token = ""

while True:
  # Request the targeting options list.
  response = service.targetingTypes() \
    .targetingOptions().list(
      advertiserId=advertiser-id,
      targetingType="TARGETING_TYPE_BROWSER",
      pageToken=next_page_token
  ).execute()

  # Check if response is empty.
  if not response:
    print("List request returned no Targeting Options")
    break

  # Iterate over retrieved targeting options.
  for option in response['targetingOptions']:
    print("Targeting Option ID: %s, Browser Display Name: %s"
          % (option['targetingOptionId'], option['browserDetails']['displayName']))

  # Break out of loop if there is no next page.
  if 'nextPageToken' not in response:
    break

  # Update the next page token.
  next_page_token = response['nextPageToken']

2,399필리핀

// Create the page token variable.
$nextPageToken = null;

do {
    // Build the query parameters object for the request.
    $optParams = array(
        'advertiserId' => advertiser-id,
        'pageToken' => $nextPageToken
    );

    // Call the API, getting the browser targeting options for the
    // identified advertiser.
    $response = $this
        ->service
        ->targetingTypes_targetingOptions
        ->listTargetingTypesTargetingOptions(
            'TARGETING_TYPE_BROWSER',
            $optParams
        );

    // Print the resulting targeting options.
    if (!empty($response->getTargetingOptions())) {
        foreach ($response->getTargetingOptions() as $option) {
            printf(
                'Targeting Option ID: %s, Browser Display Name: %s\n',
                $option['targetingOptionId'],
                $option['browserDetails']['displayName']
            );
        }
    } else {
        print('No targeting options returned\n');
    }

    // Update the next page token.
    $nextPageToken = $response->getNextPageToken();
} while (
    !empty($response->getTargetingOptions())
    && $nextPageToken
);

타겟팅 가능한 항목 나열

타겟팅 가능한 기존 항목을 사용하여 광고 항목을 타겟팅하려면 해당 항목의 ID가 필요합니다. 채널, 통합 잠재고객, 인벤토리 소스 그룹과 같은 타겟팅 가능한 항목은 Display & Video 360 API의 자체 서비스를 통해 가져올 수 있습니다.

각 서비스에는 자체 getlist 메서드가 있습니다. 지정된 광고주에서 항목을 사용할 수 있는지 확인하려면 get 메서드를 사용합니다. list 메서드를 사용하여 특정 광고주가 사용할 수 있는 리소스 유형의 모든 항목을 탐색하므로 해당 광고주의 광고 항목에 타겟팅을 할당하는 데 사용할 수 있습니다.

타겟팅 가능한 항목의 하위 집합은 API를 통해 관리할 수도 있습니다. 이는 해당 서비스의 createpatch 메서드뿐만 아니라 인벤토리 소스, 제외 키워드, 위치와 같이 항목에 나열된 개별 값에 대한 서비스를 통해 실행됩니다.

관심 장소 타겟팅 옵션 ID 만들기

TARGETING_TYPE_POI 아래에서 이름이 지정된 관심 장소 타겟팅 옵션은 targetingTypes.targetingOptions.search를 사용하여 가져올 수 있습니다. 또한 특정 위도-경도 좌표를 타겟팅하도록 맞춤형 TARGETING_TYPE_POI 타겟팅 옵션 ID를 빌드할 수 있습니다.

관심 장소 타겟팅 옵션 ID를 만들려면 다음 단계를 따르세요.

  1. 위도-경도 좌표 (예: '40.7414691, -74.003387')를 가져옵니다.
  2. 좌표 값을 소수점 이하 여섯 번째 자리로 반올림합니다 (예: '40.741469, -74.003387').
  3. 좌표 값에서 소수점 이하 자릿수를 삭제하세요 (예: '40741469, -74003387').
  4. 두 값을 연결하여 세미콜론으로 구분된 단일 문자열을 만듭니다(예: '40741469;-74003387').

TARGETING_TYPE_POI 할당 타겟팅 옵션을 만들 때 결과 문자열을 targetingOptionId로 사용할 수 있습니다.

생성 시 할당된 타겟팅 옵션 리소스의 targetingOptionIdassignedTargetingOptionId 필드가 업데이트되고 세미콜론과 영숫자 해시가 추가됩니다.

타겟팅 옵션 할당하기

광고 항목에 할당된 타겟팅은 할당된 타겟팅 옵션으로 표시됩니다. 이러한 항목은 할당된 타겟팅 옵션 서비스를 사용하여 관리할 수 있습니다. 할당된 타겟팅 옵션을 만들면 이러한 타겟팅 세부정보가 상위 광고 항목에 적용됩니다. 기존에 할당된 타겟팅 옵션을 삭제하면 해당 타겟팅이 삭제됩니다.

advertisers.lineItems.targetingTypes.assignedTargetingOptions.create를 사용하여 할당된 타겟팅 옵션을 만듭니다. 할당된 타겟팅 옵션 리소스의 details 필드에 의도한 타겟팅 유형에 해당하는 타겟팅 매개변수를 지정합니다.

다음은 타겟팅 유형 TARGETING_TYPE_BROWSER의 할당된 타겟팅 옵션을 만드는 방법의 예입니다.

Java

// Create an AssignedTargetingOption object of the
// browser targeting type.
AssignedTargetingOption assignedTargetingOption =
   new AssignedTargetingOption()
       .setBrowserDetails(
           new BrowserAssignedTargetingOptionDetails()
               .setTargetingOptionId(targeting-option-id));

// Configure the create request.
AssignedTargetingOptions.Create request =
   service
       .advertisers()
       .lineItems()
       .targetingTypes()
       .assignedTargetingOptions()
       .create(
           advertiser-id,
           line-item-id,
           "TARGETING_TYPE_BROWSER",
           assignedTargetingOption);

// Send the request.
AssignedTargetingOption response = request.execute();

// Display the new assigned targeting option.
System.out.printf("AssignedTargetingOption %s was created.",
   response.getName());

Python

# Create a assigned targeting option object.
assigned_targeting_option_obj = {
    'browserDetails': {
        'targetingOptionId': targeting-option-id
    }
}

# Create the assigned targeting option.
assigned_targeting_option = service.advertisers().lineItems()\
  .targetingTypes().assignedTargetingOptions().create(
    advertiserId=advertiser-id,
    lineItemId=line-item-id,
    targetingType="TARGETING_TYPE_BROWSER",
    body=assigned_targeting_option_obj
).execute()

# Display the new assigned targeting option.
print("Assigned Targeting Option %s was created."
      % assigned_targeting_option["name"])

2,399필리핀

// Create a assigned targeting option object.
$assignedTargetingOption =
    new Google_Service_DisplayVideo_AssignedTargetingOption();

// Create and set browser details.
$details =
    new Google_Service_DisplayVideo_BrowserAssignedTargetingOptionDetails();
$details->setTargetingOptionId(targeting-option-id);
$assignedTargetingOption->setBrowserDetails($details);

// Call the API, creating the browser assigned targeting option for the
// given line item.
$result = $this
    ->service
    ->advertisers_lineItems_targetingTypes_assignedTargetingOptions
    ->create(
        advertiser-id,
        line-item-id,
        'TARGETING_TYPE_BROWSER',
        $assignedTargetingOption
    );

printf(
    'Assigned Targeting Option %s was created.\n',
    $result['name']
);

오류

타겟팅 구성 오류

Display & Video 360의 타겟팅에는 복잡한 규칙이 많습니다. 이는 할당된 타겟팅 옵션 생성 시 반환되는 오류를 통해 Display & Video 360 API에서 적용됩니다. API가 반환하는 오류에 위반 내용이 명시됩니다.

오류는 대부분 광고 항목에 할당된 기존 타겟팅으로 인해 발생합니다. advertisers.lineItems.targetingTypes.assignedTargetingOptions.list를 사용하여 광고 항목에 할당된 특정 타겟팅 유형의 모든 타겟팅 옵션을 검색하고, 주어진 제한사항을 고려하여 원하는 타겟팅이 가능한지 평가하며, 원하는 할당된 타겟팅 옵션을 다시 만들기 전에 advertisers.lineItems.targetingTypes.assignedTargetingOptions.delete를 사용하여 원치 않는 타겟팅을 삭제하세요.

YouTube + 파트너 타겟팅 오류

YouTube + 파트너 캠페인 전용 타겟팅은 Display & Video 360 API를 사용하여 업데이트할 수 없으며 그렇게 하면 오류가 발생합니다.

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

  • TARGETING_TYPE_SESSION_POSITION
  • TARGETING_TYPE_YOUTUBE_CHANNEL
  • TARGETING_TYPE_YOUTUBE_VIDEO

동시 실행 오류

동시에 여러 개의 요청을 통해 단일 광고 항목의 설정이나 타겟팅을 업데이트하려고 하면 오류가 발생합니다.

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

일괄 및 리소스 전체 타겟팅 작업

일괄리소스 전체 타겟팅 방법을 사용하여 타겟팅 유형 전반에서 할당된 타겟팅 옵션을 관리할 수 있습니다.

광고 항목의 현재 타겟팅을 전체적으로 보거나, 사전 설정된 타겟팅 구성을 광고 항목에 적용하거나 광고 항목의 타겟팅을 동시에 여러 번 변경해야 하는 경우 이러한 타겟팅 방법을 사용하는 것이 좋습니다.

목록 타겟팅 일괄

advertisers.lineItems.bulkListAssignedTargetingOptions를 사용하면 다양한 타겟팅 유형에서 하나 이상의 광고 항목에 할당된 모든 타겟팅을 확인할 수 있습니다. 다른 모든 list 메서드와 유사하게 작동합니다. filter 쿼리 매개변수를 사용하여 TargetingType 또는 Inheritance로 결과를 필터링할 수 있습니다.

다음은 상위 파트너 또는 광고주가 상속한 광고 항목에 할당된 모든 타겟팅 옵션을 나열하는 방법의 예입니다.

Java

// Configure the bulk list request.
LineItems.BulkListAssignedTargetingOptions request =
    service.advertisers().lineItems()
        .bulkListAssignedTargetingOptions(advertiser-id);

// Set Line Items to retrieve targeting for.
request.setLineItemIds(line-item-ids);

// Set filter to only return inherited assigned targeting options.
request.setFilter(
    "inheritance=\"INHERITED_FROM_ADVERTISER\" OR inheritance=\"INHERITED_FROM_PARTNER\"");

// Create the response and nextPageToken variables.
BulkListAssignedTargetingOptionsResponse response;
String nextPageToken = null;

do {
  // Set page token and execute the list request.
  response = request.setPageToken(nextPageToken).execute();

  // Check if the response is empty.
  if (response.isEmpty()) {
    System.out.print("Bulk list request returned no Assigned Targeting Options");
    break;
  }

  // Iterate over retrieved line item assigned targeting option wrapper objects.
  for (LineItemAssignedTargetingOption lineItemAssignedTargetingOption
      : response.getLineItemAssignedTargetingOptions()) {
    System.out.printf(
        "Assigned Targeting Option %s found\n",
        lineItemAssignedTargetingOption.getAssignedTargetingOption().getName());
  }

  // Update the next page token.
  nextPageToken = response.getNextPageToken();
} while (!Strings.isNullOrEmpty(nextPageToken));

Python

# Create the page token variable.
next_page_token = ""

while True:
  # Execute the list request.
  response = service.advertisers().lineItems() \
    .bulkListAssignedTargetingOptions(
      advertiserId=advertiser-id,
      lineItemIds=line-item-ids,
      filter="inheritance=\"INHERITED_FROM_ADVERTISER\" OR "
             "inheritance=\"INHERITED_FROM_PARTNER\"",
      pageToken=next_page_token
  ).execute()

  # Check if response is empty.
  if not response:
    print("Bulk list request returned no Assigned Targeting Options")
    break

  # Iterate over retrieved assigned targeting options.
  for lineItemAssignedTargetingOption in response['lineItemAssignedTargetingOptions']:
    print("Assigned Targeting Option %s found"
          % (lineItemAssignedTargetingOption['assignedTargetingOption']['name']))

  # Break out of loop if there is no next page.
  if 'nextPageToken' not in response:
    break

  # Update the next page token.
  next_page_token = response['nextPageToken']

2,399필리핀

// Create the page token variable.
$nextPageToken = null;

do {
    // Build the query parameters object for the request.
    $optParams = array(
        'lineItemIds' => line-item-ids,
        'filter' => "inheritance=\"INHERITED_FROM_ADVERTISER\" OR "
            . "inheritance=\"INHERITED_FROM_PARTNER\"",
        'pageToken' => $nextPageToken
    );

    // Call the API, getting all the assigned targeting options for the
    // identified line item.
    $response = $service
        ->advertisers_lineItems
        ->bulkListAssignedTargetingOptions(
            advertiser-id,
            $optParams
    );

    // Print the returned assigned targeting options.
    if (!empty($response->getLineItemAssignedTargetingOptions())) {
        foreach ($response->getLineItemAssignedTargetingOptions() as $option) {
            printf('Assigned Targeting Option %s found\n', $option->getAssignedTargetingOption()['name']);
        }
    } else {
        print('No targeting options returned\n');
    }

    // Update the next page token.
    $nextPageToken = $response->getNextPageToken();
} while (
    !empty($response->getLineItemAssignedTargetingOptions())
    && $nextPageToken);

타겟팅 일괄 수정

advertisers.lineItems.bulkEditAssignedTargetingOptions를 사용하면 하나 이상의 광고 항목에서 다양한 타겟팅 유형의 여러 타겟팅 옵션을 동시에 추가하고 삭제할 수 있습니다.

이 메서드는 DeleteAssignedTargetingOptionsRequests 목록과 CreateAssignedTargetingOptionsRequests 목록을 사용합니다. 단일 요청 객체는 동일한 타겟팅 유형의 할당된 여러 타겟팅 옵션의 삭제 또는 생성을 나타낼 수 있습니다.

할당된 타겟팅 옵션을 삭제하거나 생성하려고 할 때 광고 항목에 오류가 발생하면 해당 광고 항목에 대한 일괄 작업이 취소됩니다. 이 요청은 성공적으로 업데이트된 광고 항목 목록업데이트하지 못한 광고 항목, 관련 오류 목록을 반환합니다.

다음은 삭제할 할당된 타겟팅 옵션 목록과 만들 타겟팅 옵션을 고려하여 하나 이상의 광고 항목에 할당된 타겟팅 옵션을 일괄 수정하는 방법을 보여주는 예입니다.

Java

// Create a bulk edit request.
BulkEditAssignedTargetingOptionsRequest requestContent =
    new BulkEditAssignedTargetingOptionsRequest();

// Set line item IDs in edit request.
requestContent.setLineItemIds(line-item-ids);

// Build delete request list.
ArrayList<DeleteAssignedTargetingOptionsRequest> deleteRequests =
    new ArrayList<DeleteAssignedTargetingOptionsRequest>();

// Add browser assigned targeting option IDs to delete request list.
deleteRequests.add(new DeleteAssignedTargetingOptionsRequest()
    .setTargetingType("TARGETING_TYPE_BROWSER")
    .setAssignedTargetingOptionIds(delete-browser-assigned-targeting-ids));

// Add device make or model assigned targeting option IDs to delete request list.
deleteRequests.add(new DeleteAssignedTargetingOptionsRequest()
    .setTargetingType("TARGETING_TYPE_DEVICE_MAKE_MODEL")
    .setAssignedTargetingOptionIds(
        delete-device-make-model-assigned-targeting-ids));

// Set delete requests in edit request.
requestContent.setDeleteRequests(deleteRequests);

// Build create request list.
ArrayList<CreateAssignedTargetingOptionsRequest> createRequests =
    new ArrayList<CreateAssignedTargetingOptionsRequest>();

// Create browser assigned targeting option create request.
CreateAssignedTargetingOptionsRequest createBrowserTargetingRequest =
    new CreateAssignedTargetingOptionsRequest();
createBrowserTargetingRequest.setTargetingType("TARGETING_TYPE_BROWSER");

// Create and set list of browser assigned targeting options.
ArrayList<AssignedTargetingOption> createBrowserAssignedTargetingOptions =
    new ArrayList<AssignedTargetingOption>();
for (String targetingOptionId : create-browser-assigned-targeting-ids) {
  createBrowserAssignedTargetingOptions.add(new AssignedTargetingOption()
      .setBrowserDetails(
          new BrowserAssignedTargetingOptionDetails()
              .setTargetingOptionId(targetingOptionId)));
}
createBrowserTargetingRequest
    .setAssignedTargetingOptions(createBrowserAssignedTargetingOptions);

// Add browser assigned targeting options to list of create requests.
createRequests.add(createBrowserTargetingRequest);

// Set create requests in edit request.
requestContent.setCreateRequests(createRequests);

// Configure the bulk edit request.
LineItems.BulkEditAssignedTargetingOptions request =
    service.advertisers().lineItems()
        .bulkEditAssignedTargetingOptions(
            advertiser-id,
            requestContent);

// Execute bulk edit request.
BulkEditAssignedTargetingOptionsResponse response = request.execute();

// Check if any line items updated successfully.
if (response.getUpdatedLineItemIds() == null || response.getUpdatedLineItemIds().isEmpty()) {
  System.out.println("No line items were updated successfully.");
} else {
  System.out.printf(
      "Targeting configurations for the following line item IDs were updated: %s.\n",
      Arrays.toString(response.getUpdatedLineItemIds().toArray()));
}

// Check if any line items failed to update.
if (response.getFailedLineItemIds() == null || response.getFailedLineItemIds().isEmpty()) {
  System.out.println("No line items failed to update.");
} else {
  // Print the line items that failed to update.
  System.out.printf(
      "Targeting configurations for the following line item IDs failed to update: %s.\n",
      Arrays.toString(response.getFailedLineItemIds().toArray()));

  // Print errors thrown for failed updates.
  System.out.println("The failed updates were caused by the following errors:");
  for (Status error : response.getErrors()) {
    System.out.printf("Error Code: %s, Message: %s\n", error.getCode(), error.getMessage());
  }
}

Python

# Build assigned targeting option objects to create.
createBrowserAssignedTargetingOptions = []
for targeting_id in create-browser-assigned-targeting-ids:
  createBrowserAssignedTargetingOptions.append(
      {'browserDetails': {'targetingOptionId': targeting_id}}
  )

# Create a bulk edit request.
bulk_edit_line_item_request = {
    'lineItemIds': line-item-ids,
    'deleteRequests': [
        {
            'targetingType': 'TARGETING_TYPE_BROWSER',
            'assignedTargetingOptionIds':
              delete-browser-assigned-targeting-ids
        },
        {
            'targetingType': 'TARGETING_TYPE_DEVICE_MAKE_MODEL',
            'assignedTargetingOptionIds':
              delete-device-make-model-assigned-targeting-ids
        }
    ],
    'createRequests': [
        {
            'targetingType': 'TARGETING_TYPE_BROWSER',
            'assignedTargetingOptions':
              createBrowserAssignedTargetingOptions
        }
    ]
}

# Edit the line item targeting.
response = service.advertisers().lineItems()\
  .bulkEditAssignedTargetingOptions(
    advertiserId=advertiser-id,
    body=bulk_edit_line_item_request
).execute()

# Print successfully updated line items.
if 'updatedLineItemIds' not in response:
  print("No line items were updated successfully.")
else:
  print("Targeting configurations for the following line item IDs were updated: %s"
        % response['updatedLineItemIds'])

# Print line items that failed to update.
if 'failedLineItemIds' not in response:
  print("No line items failed to update.")
else:
  print("Targeting configurations for the following line item IDs failed to update: %s"
        % response['failedLineItemIds'])
  if 'errors' in response:
    print("The failed updates were caused by the following errors:")
    for error in response["errors"]:
      print("Error code: %s, Message: %s" % (error["code"], error["message"]))

2,399필리핀

// Create delete request list.
$deleteRequests = array();

// Create and add browser assigned targeting option IDs to delete request list.
$deleteBrowserTargetingRequest =
    new Google_Service_DisplayVideo_DeleteAssignedTargetingOptionsRequest();
$deleteBrowserTargetingRequest->setTargetingType(
    "TARGETING_TYPE_BROWSER"
);
$deleteBrowserTargetingRequest->setAssignedTargetingOptionIds(
    delete-browser-assigned-targeting-ids
);
$deleteRequests[] = $deleteBrowserTargetingRequest;

// Create and add device assigned targeting option IDs to delete request list.
$deleteDeviceTargetingRequest =
    new Google_Service_DisplayVideo_DeleteAssignedTargetingOptionsRequest();
$deleteDeviceTargetingRequest->setTargetingType(
    "TARGETING_TYPE_DEVICE_MAKE_MODEL"
);
$deleteDeviceTargetingRequest->setAssignedTargetingOptionIds(
    delete-device-make-model-assigned-targeting-ids
);
$deleteRequests[] = $deleteDeviceTargetingRequest;

// Create create request list.
$createRequests = array();

// Create and populate list of browser assigned targetion options to create.
$createBrowserAssignedTargetingOptions = array();
foreach (create-browser-assigned-targeting-ids as $optionId) {
    $option = new Google_Service_DisplayVideo_AssignedTargetingOption();
    $details =
        new Google_Service_DisplayVideo_BrowserAssignedTargetingOptionDetails();
    $details->setTargetingOptionId($optionId);

    $option->setBrowserDetails($details);
    $createBrowserAssignedTargetingOptions[] = $option;
}

// Create and add browser assigned targeting option create request to create
// request list.
$createBrowserTargetingRequest =
    new Google_Service_DisplayVideo_CreateAssignedTargetingOptionsRequest();
$createBrowserTargetingRequest->setTargetingType(
    "TARGETING_TYPE_BROWSER"
);
$createBrowserTargetingRequest->setAssignedTargetingOptions(
    $createBrowserAssignedTargetingOptions
);
$createRequests[] = $createBrowserTargetingRequest;

// Create a bulk edit request and assign create and delete request lists.
$body =
    new Google_Service_DisplayVideo_BulkEditAssignedTargetingOptionsRequest();
$body->setLineItemIds(line-item-ids);
$body->setCreateRequests($createRequests);
$body->setDeleteRequests($deleteRequests);

// Call the API, editing the assigned targeting options for the identified
// line item.
$response = $service
    ->advertisers_lineItems
    ->bulkEditAssignedTargetingOptions(
        advertiser-id,
        $body
    );

// Print successfully updated line items.
if (!empty($response->getUpdatedLineItemIds())) {
    printf('Targeting configurations for the following line item IDs were updated:\n');
    foreach ($response->getUpdatedLineItemIds() as $id) {
        printf('%s\n', $id);
    }
} else {
    print('No line items were updated successfully.\n');
}

// Print line items that failed to update.
if (!empty($response->getFailedLineItemIds())) {
    print('Targeting configurations for the following line item IDs failed to update:\n');
    foreach ($response->getFailedLineItemIds() as $id) {
        printf('%s\n', $id);
    }
    print('The failed updates were caused by the following errors:\n');
    foreach ($response->getErrors() as $error) {
        printf('Error Code: %s, Message: %s\n', $error->getCode(), $error->getMessage());
    }
} else {
    print('No line items failed to update.\n');
}