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ới là
TARGETING_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áchFirstAndThirdPartyAudienceGroup
đố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:
- 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ặcincludedCombinedAudienceGroup
. - Người dùng không rơi vào
excludedFirstAndThirdPartyAudienceGroup
hoặcexcludedGoogleAudienceGroup
.
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
.