Đối tượng mục tiêu

Việc nhắm mục tiêu tổng hợp của hầu hết các loại nhắm mục tiêu là kết quả của nhiều Tài nguyên AssignedTargetingOption. Trong một loại nhắm mục tiêu, mỗi tùy chọn nhắm mục tiêu được chỉ định có thể chỉ định một giá trị khác nhau, ví dụ: trình duyệt riêng cho TARGETING_TYPE_BROWSER. Nếu bạn muốn để nhắm mục tiêu một trình duyệt bổ sung, bạn có thể làm điều đó bằng cách tạo tuỳ chọn nhắm mục tiêu được chỉ định mớiTARGETING_TYPE_BROWSER bên dưới tài nguyên đó. Tương tự, nếu bạn không Nếu muốn nhắm mục tiêu đến một trình duyệt cụ thể hơn nữa, bạn có thể xoá tùy chọn nhắm mục tiêu được chỉ định.

Tính năng nhắm mục tiêu theo nhóm đối tượng không tuân theo quy ước theo mô-đun này. Thay vào đó, tất cả mã đối tượng liên quan đến việc nhắm mục tiêu của một tài nguyên sẽ được chỉ định cho tài nguyên đó thông qua một loại AssignedTargetingOption TARGETING_TYPE_AUDIENCE_GROUP. Cố gắng chỉ định nhiều đối tượng tuỳ chọn nhắm mục tiêu được chỉ định cho nhóm sẽ trả về lỗi. Trang này trình bày chi tiết logic dùng chỉ dẫn tùy chọn nhắm mục tiêu được chỉ định này và mô tả cách cập nhật chính xác tiêu chí nhắm mục tiêu theo nhóm đối tượng hiện có.

Logic nhắm mục tiêu của nhóm đối tượng

Một nhóm đối tượng được chỉ định tùy chọn nhắm mục tiêu có một tập hợp Đối tượng AudienceGroupAssignedTargetingOptionsDetails bao gồm danh sách mã đối tượng, hay còn gọi là nhóm đối tượng, để bao gồm và loại trừ khi phân phát quảng cáo. Tiêu chí nhắm mục tiêu tổng hợp của tiêu chí nhắm mục tiêu được chỉ định là kết quả của các phép toán logic sau đây:

  • Các đối tượng nhóm đối tượng riêng lẻ thuộc tất cả các loại kết hợp chúng được bao gồm đối tượng theo UNION.
  • includedFirstAndThirdAudienceGroups trường này bao gồm danh sách FirstAndThirdPartyAudienceGroup đối tượng, kết hợp các nhóm đối tượng theo LOCATION.
  • Tất cả các trường của nhóm đối tượng đều có tiền tố "được bao gồm", đại diện cho danh sách người dùng hoặc phân khúc danh sách người dùng để nhắm mục tiêu tích cực, được UNION kết hợp.
  • Tất cả các trường nhóm đối tượng bị loại trừ được kết hợp bởi UNION và TÍNH NĂNG BỔ SUNG kết quả được kết hợp với tiêu chí nhắm mục tiêu khẳng định theo LOCATION.

Trong thực tế, điều này có nghĩa là kết quả AudienceGroupAssignedTargetingOptionsDetails sẽ nhắm mục tiêu người dùng nếu đáp ứng cả hai điều kiện sau:

  1. Người dùng thuộc mọi nhóm đối tượng trong danh sách includedFirstAndThirdPartyAudienceGroups hoặc thuộc ít nhất một trong số includedGoogleAudienceGroup, includedCustomListGroup hoặc includedCombinedAudienceGroup.
  2. Người dùng không rơi vào excludedFirstAndThirdPartyAudienceGroup hoặc excludedGoogleAudienceGroup.

Cập nhật tiêu chí nhắm mục tiêu theo nhóm đối tượng

Để cập nhật tiêu chí nhắm mục tiêu theo nhóm đối tượng của một mục hàng, phương pháp Bạn phải xóa tùy chọn nhắm mục tiêu được chỉ định (nếu có) và sau đó tùy chọn bạn cần tạo tùy chọn nhắm mục tiêu được chỉ định với các thay đổi mong muốn. Điều này có thể được thực hiện trong một yêu cầu duy nhất bằng cách sử dụng advertisers.lineItems.bulkEditAssignedTargetingOptions .

Dưới đây là ví dụ về cách cập nhật tiêu chí nhắm mục tiêu theo đối tượng hiện tại của một dòng bằng cách truy xuất bất kỳ tiêu chí nhắm mục tiêu theo nhóm đối tượng hiện có nào, sau đó tạo hàng loạt chỉnh sửa yêu cầu:

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.
BulkEditAssignedTargetingOptionsRequest requestContent =
    new BulkEditAssignedTargetingOptionsRequest();
requestContent.setLineItemIds(Arrays.asList(lineItemId));

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 (Exception 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.
BulkEditAssignedTargetingOptionsResponse response =
    service.advertisers().lineItems()
        .bulkEditAssignedTargetingOptions(
            advertiserId,
            requestContent).execute();

// Print the line item IDs that successfully updated.
if (response.getUpdatedLineItemIds() != null && !response.getUpdatedLineItemIds().isEmpty()) {
  System.out.printf(
      "Targeting configurations for the following line item IDs were updated: %s.\n",
      Arrays.toString(response.getUpdatedLineItemIds().toArray()));
}

// Print the line item IDs the failed to update.
if (response.getFailedLineItemIds() != null && !response.getFailedLineItemIds().isEmpty()) {
  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

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

try:
  # 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()
except Exception:
  print("Error retrieving existing audience targeting. Assuming no "
        "existing audience targeting.")
  retrieved_audience_targeting = {}
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 = {
    'lineItemIds': [line_item_id],
    'deleteRequests': [
        {
            'targetingType': "TARGETING_TYPE_AUDIENCE_GROUP",
            'assignedTargetingOptionIds': [
                "audienceGroup"
            ]
        }
    ],
    'createRequests': [
        {
            'targetingType': "TARGETING_TYPE_AUDIENCE_GROUP",
            'assignedTargetingOptions': [
                {'audienceGroupDetails': updated_audience_group_details}
            ]
        }
    ]
}

# Update the audience targeting
response = service.advertisers().lineItems(
).bulkEditAssignedTargetingOptions(
    advertiserId=advertiser_id,
    body=bulk_edit_request
).execute()

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

# Print the line item IDs the failed to update.
if 'failedLineItemIds' in response:
  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"]))

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_BulkEditAssignedTargetingOptionsRequest();
$requestBody->setLineItemIds([$lineItemId]);

$audienceGroupDeleteRequests = array();

try {
    // Retrieve existing audience group targeting.
    $existingAudienceGroupTargetingOption = $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 = $service
    ->advertisers_lineItems
    ->bulkEditAssignedTargetingOptions(
        $advertiserId,
        $requestBody
    );

// Print the line item IDs the successfully updated.
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);
    }
}

// Print the line item IDs the 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());
    }
}

Tối ưu hoá tiêu chí nhắm mục tiêu theo đối tượng

Hiển thị và Video 360 có thể mở rộng ra ngoài phạm vi tiếp cận của đối tượng đã chọn cho những người dùng mới và phù hợp thông qua tính năng nhắm mục tiêu được tối ưu hoá .

Tính năng tối ưu hoá tiêu chí nhắm mục tiêu được thiết lập ở cấp mục hàng và có thể được định cấu hình thông qua trường targetingExpansion trong tài nguyên LineItem.