目标对象群组

大多数定位类型的汇总定位都是由多种定位技术所致, AssignedTargetingOption 资源。在定位类型中 每个分配的定位选项都可能指定不同的值,例如 TARGETING_TYPE_BROWSER 的单个浏览器。如果您想要 要定位其他浏览器,可以 新建已分配的定位选项 TARGETING_TYPE_BROWSER。同样,如果您 希望定位特定浏览器,则可以删除 指定的定位选项

受众群体群组定位条件没有遵循此模块化惯例。相反, 系统会将资源定位中涉及的受众群体 ID 分配给该资源 通过单个 AssignedTargetingOption 类型 TARGETING_TYPE_AUDIENCE_GROUP。尝试分配多个受众群体 组将定位选项分配给了资源,系统将返回错误。当前页面 详细说明了指定这一定位选项的逻辑,并说明了如何 正确更新现有受众群体定位条件。

受众群体群组定位逻辑

为单个受众群体组分配的定位选项 AudienceGroupAssignedTargetingOptionsDetails 对象 由一系列受众群体 ID(称为受众群体组)组成,以包含和 排除。所分配的定位条件的汇总定位条件 选项是以下逻辑运算的结果:

  • 所有类型的单个受众群体对象都会组合其包含的对象 按 UNION 细分的受众群体。
  • includedFirstAndThirdAudienceGroups 字段,其中包含一系列 FirstAndThirdPartyAudienceGroup 对象,用于合并 按交通区域划分的受众群体组。
  • 带有“已包含”前缀的所有受众群体组字段,表示用户名单 要正向定位的用户名单或用户细分,由 UNION 合并。
  • 所有被排除的受众群体组字段均通过 UNION 和 COMPLEMENT 合并 该结果与 INTERSECTION 的肯定定位相结合。

实际上,这意味着 AudienceGroupAssignedTargetingOptionsDetails将会 如果同时满足以下两个条件,则定位用户:

  1. 该用户属于以下受众群体列表中的所有受众群体: includedFirstAndThirdPartyAudienceGroups 属于以下至少一个 includedGoogleAudienceGroup, includedCustomListGroup,或 includedCombinedAudienceGroup
  2. 用户不属于 excludedFirstAndThirdPartyAudienceGroupexcludedGoogleAudienceGroup

更新受众群体定位条件

为了更新某个订单项的受众群体定位条件,当前的 必须删除指定的定位选项(如果有的话),然后创建新的 然后根据所需更改创建已分配的定位选项。这可以 在单个请求中完成 advertisers.lineItems.bulkEditAssignedTargetingOptions

以下示例展示了如何更新现有订单项中的受众群体定位 检索任何现有的受众群体组定位条件,然后进行批量更改, 修改请求:

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());
 
}
}
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"]))
$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());
   
}
}

优化受众群体定位

展示广告与借助 Video 360,您可以覆盖更多客户 通过优化型定位将选定的受众群体展示给新的相关用户 功能

优化型定位是在订单项一级设置的,并可通过 LineItem 资源中的 targetingExpansion 字段。