大多数定位类型的汇总定位都是由多种定位技术所致,
AssignedTargetingOption
资源。在定位类型中
每个分配的定位选项都可能指定不同的值,例如
TARGETING_TYPE_BROWSER
的单个浏览器。如果您想要
要定位其他浏览器,可以
新建已分配的定位选项
TARGETING_TYPE_BROWSER
。同样,如果您
希望定位特定浏览器,则可以删除
指定的定位选项
受众群体群组定位条件没有遵循此模块化惯例。相反,
系统会将资源定位中涉及的受众群体 ID 分配给该资源
通过单个 AssignedTargetingOption
类型
TARGETING_TYPE_AUDIENCE_GROUP
。尝试分配多个受众群体
组将定位选项分配给了资源,系统将返回错误。当前页面
详细说明了指定这一定位选项的逻辑,并说明了如何
正确更新现有受众群体定位条件。
受众群体群组定位逻辑
为单个受众群体组分配的定位选项
AudienceGroupAssignedTargetingOptionsDetails
对象
由一系列受众群体 ID(称为受众群体组)组成,以包含和
排除。所分配的定位条件的汇总定位条件
选项是以下逻辑运算的结果:
- 所有类型的单个受众群体对象都会组合其包含的对象 按 UNION 细分的受众群体。
includedFirstAndThirdAudienceGroups
字段,其中包含一系列FirstAndThirdPartyAudienceGroup
对象,用于合并 按交通区域划分的受众群体组。- 带有“已包含”前缀的所有受众群体组字段,表示用户名单 要正向定位的用户名单或用户细分,由 UNION 合并。
- 所有被排除的受众群体组字段均通过 UNION 和 COMPLEMENT 合并 该结果与 INTERSECTION 的肯定定位相结合。
实际上,这意味着
AudienceGroupAssignedTargetingOptionsDetails
将会
如果同时满足以下两个条件,则定位用户:
- 该用户属于以下受众群体列表中的所有受众群体:
includedFirstAndThirdPartyAudienceGroups
或属于以下至少一个includedGoogleAudienceGroup
,includedCustomListGroup
,或includedCombinedAudienceGroup
。 - 用户不属于
excludedFirstAndThirdPartyAudienceGroup
或excludedGoogleAudienceGroup
。
更新受众群体定位条件
为了更新某个订单项的受众群体定位条件,当前的
必须删除指定的定位选项(如果有的话),然后创建新的
然后根据所需更改创建已分配的定位选项。这可以
在单个请求中完成
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
字段。