Quản lý tiêu chí nhắm mục tiêu theo tài nguyên là một tính năng chính của API Display & Video 360. Bạn có thể chỉ định tiêu chí nhắm mục tiêu cho nhiều loại tài nguyên và sử dụng một số tài nguyên và không gian mã nhận dạng khác. Trang này trình bày chi tiết các giới hạn cần lưu ý và các phương pháp hay nhất để triển khai khi bạn sử dụng dịch vụ Tuỳ chọn nhắm mục tiêu được chỉ định của API Display & Video 360.
Sử dụng tính năng kế thừa tiêu chí nhắm mục tiêu
Các tài nguyên con có thể kế thừa tiêu chí nhắm mục tiêu được chỉ định cho một số tài nguyên. Bạn có thể truy xuất các tuỳ chọn nhắm mục tiêu mà tài nguyên con kế thừa nhưng không thể chỉnh sửa các tuỳ chọn đó ở cấp tài nguyên con. Điều này cho phép áp dụng chế độ cài đặt an toàn thương hiệu và các tiêu chí nhắm mục tiêu khác trên toàn bộ đối tác hoặc nhà quảng cáo.
Bạn có thể xem đường dẫn kế thừa trong sơ đồ dưới đây:
Như đã chỉ định trong sơ đồ, một số cấp độ nhắm mục tiêu chỉ hỗ trợ một số loại nhắm mục tiêu. Điều này có nghĩa là một số tuỳ chọn nhắm mục tiêu không thể được đặt ở cấp cao hơn và kế thừa, mà cần được đặt ở cấp thấp hơn.
Tính kế thừa trong tài nguyên YouTube và Đối tác
Tính năng kế thừa tiêu chí nhắm mục tiêu không được phản ánh cho các tài nguyên YouTube và Đối tác trong API Display & Video 360. Bạn sẽ không thể truy xuất tiêu chí nhắm mục tiêu kế thừa của Nhóm quảng cáo ở cấp AdGroup
và tiêu chí nhắm mục tiêu trên YouTube được chỉ định cho tài nguyên mẹ sẽ không được tài nguyên con kế thừa.
Để truy xuất tất cả chế độ cài đặt tiêu chí nhắm mục tiêu theo chức năng cho một nhóm quảng cáo, bạn nên truy xuất các tuỳ chọn nhắm mục tiêu được chỉ định cho Nhóm quảng cáo, mục hàng gốc và nhà quảng cáo gốc.
Lưu ý tiêu chí nhắm mục tiêu được chỉ định khi tạo mục hàng
Ngoài các tiêu chí nhắm mục tiêu kế thừa, hầu hết các tiêu chí nhắm mục tiêu chỉ có thể được chỉ định sau khi tạo mục hàng. Tuy nhiên, có một số loại tiêu chí nhắm mục tiêu có một tập hợp con giá trị mặc định được chỉ định cho mục hàng khi tạo mục hàng. Các loại tiêu chí nhắm mục tiêu đó là:
Nếu bạn cố gắng tạo hoặc xoá các lựa chọn nhắm mục tiêu đã chỉ định hiện có hoặc không có, hệ thống sẽ trả về lỗi. Vì vậy, bạn nên nắm được toàn bộ bộ tiêu chí nhắm mục tiêu được chỉ định cho mục hàng của mình khi tạo. Nếu bạn cần truy xuất tiêu chí nhắm mục tiêu được chỉ định cho một mục hàng trên các loại tiêu chí nhắm mục tiêu, hãy sử dụng advertisers.lineItems.bulkListAssignedTargetingOptions
.
Ngoài ra, một số chế độ cài đặt được đặt theo mặc định khi không có tuỳ chọn nhắm mục tiêu thuộc loại đó được chỉ định cho tài nguyên. Ví dụ: nếu một tài nguyên không có tuỳ chọn nhắm mục tiêu TARGETING_TYPE_AUTHORIZED_SELLER_STATUS
được xác định, thì điều đó có nghĩa là tài nguyên đó đang sử dụng trạng thái "Người bán trực tiếp và đại lý được uỷ quyền".
Đừng mong đợi "tiêu chí nhắm mục tiêu mặc định" tự động
Trong Display & Video 360, tiêu chí nhắm mục tiêu được đặt ở cấp chiến dịch hoặc đơn đặt hàng quảng cáo sẽ không được truyền ngay lập tức đến các mục hàng con. Tiêu chí nhắm mục tiêu này được gọi là "tiêu chí nhắm mục tiêu mặc định" và được dùng làm mẫu nhắm mục tiêu được áp dụng cho các mục hàng được tạo sau đó trong giao diện người dùng.
Trong API Display & Video 360, tiêu chí nhắm mục tiêu mặc định không tự động áp dụng cho các mục hàng mới tạo. Thao tác tạo mục hàng cơ bản không sao chép bất kỳ tiêu chí nhắm mục tiêu cấp chiến dịch hoặc đơn đặt hàng quảng cáo nào. Trong trường hợp này, bạn phải áp dụng tiêu chí nhắm mục tiêu cho các mục hàng riêng biệt thông qua phương thức tạo hoặc chỉnh sửa hàng loạt cho tuỳ chọn nhắm mục tiêu được chỉ định.
Các phương thức đặc biệt có thể là trường hợp ngoại lệ. Ví dụ: các mục hàng được tạo thông qua advertisers.lineItems.generateDefault
sẽ sao chép chế độ cài đặt từ đơn đặt hàng quảng cáo mẹ, bao gồm cả tiêu chí nhắm mục tiêu được chỉ định.
Tương tự, các mục hàng được tạo thông qua tính năng nhân bản sẽ được chỉ định cùng một tiêu chí nhắm mục tiêu như mục hàng ban đầu.
Không thể sửa đổi tiêu chí nhắm mục tiêu YouTube và đối tác
Bạn không thể cập nhật tiêu chí nhắm mục tiêu dành riêng cho chiến dịch YouTube và đối tác bằng Display & Video 360 API.
Tiêu chí nhắm mục tiêu YouTube và đối tác bao gồm tất cả tiêu chí nhắm mục tiêu được chỉ định trực tiếp cho Mục hàng YouTube và đối tác và Nhóm quảng cáo, cũng như mọi tiêu chí nhắm mục tiêu thuộc các loại tiêu chí nhắm mục tiêu sau:
TARGETING_TYPE_SESSION_POSITION
TARGETING_TYPE_YOUTUBE_CHANNEL
TARGETING_TYPE_YOUTUBE_VIDEO
Bạn có thể cập nhật tiêu chí nhắm mục tiêu này bằng cách sử dụng trực tiếp giao diện người dùng Display & Video 360 hoặc bằng cách tải Tệp dữ liệu có cấu trúc lên.
Chỉ định tiêu chí nhắm mục tiêu theo đối tượng bằng một tuỳ chọn
Các lựa chọn nhắm mục tiêu cho hầu hết các loại tiêu chí nhắm mục tiêu được chỉ định riêng lẻ. Tiêu chí nhắm mục tiêu theo nhóm đối tượng không tuân theo quy ước mô-đun này, mà được chỉ định trong một đối tượng thông tin chi tiết về tiêu chí nhắm mục tiêu theo nhóm đối tượng có thể định cấu hình, liệt kê mã nhận dạng của các đối tượng cần đưa vào và loại trừ khi phân phát quảng cáo. assignedTargetingOptionId
cho tuỳ chọn nhóm đối tượng này, sau khi được chỉ định, luôn là "audienceGroup".
Thiết kế này có nghĩa là mọi thay đổi đối với tiêu chí nhắm mục tiêu theo nhóm đối tượng đều phải được thực hiện bằng cách xoá tiêu chí nhắm mục tiêu được chỉ định cho nhóm đối tượng hiện có, sau đó tạo tiêu chí nhắm mục tiêu theo nhóm đối tượng mới với những thay đổi mong muốn. Bạn có thể thực hiện việc này trong một yêu cầu bằng cách sử dụng advertisers.lineItems.bulkEditAssignedTargetingOptions
.
Sau đây là ví dụ về cách cập nhật tiêu chí nhắm mục tiêu theo đối tượng để nhắm mục tiêu tích cực đến các đối tượng khác của Google:
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. BulkEditLineItemAssignedTargetingOptionsRequest requestContent = new BulkEditLineItemAssignedTargetingOptionsRequest(); 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 (GoogleJsonResponseException 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. BulkEditLineItemAssignedTargetingOptionsResponse response = service.advertisers().lineItems() .bulkEditLineItemAssignedTargetingOptions( advertiserId, lineItemId, requestContent).execute();
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} ) # 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() 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 = { 'deleteRequests': [ { 'targetingType': "TARGETING_TYPE_AUDIENCE_GROUP", 'assignedTargetingOptionIds': [ "audienceGroup" ] } ], 'createRequests': [ { 'targetingType': "TARGETING_TYPE_AUDIENCE_GROUP", 'assignedTargetingOptions': [ {'audienceGroupDetails': updated_audience_group_details} ] } ] } # Update the audience targeting updated_audience_targeting = service.advertisers().lineItems( ).bulkEditLineItemAssignedTargetingOptions( advertiserId=advertiser_id, lineItemId=line_item_id, body=bulk_edit_request ).execute()
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_BulkEditLineItemAssignedTargetingOptionsRequest(); $audienceGroupDeleteRequests = array(); try { // Retrieve existing audience group targeting. $existingAudienceGroupTargetingOption = $this ->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 = $this ->service ->advertisers_lineItems ->bulkEditLineItemAssignedTargetingOptions( $advertiserId, $lineItemId, $requestBody );
Hãy chuẩn bị cho việc các lựa chọn nhắm mục tiêu sẽ ngừng hoạt động
Các tuỳ chọn nhắm mục tiêu không phải là tĩnh và đôi khi một số tuỳ chọn có thể không được dùng nữa. Các tuỳ chọn nhắm mục tiêu (sau khi ngừng hoạt động) không ảnh hưởng đến việc phân phát quảng cáo của mục hàng. Sau khi ngừng hoạt động, các tuỳ chọn này sẽ bị huỷ chỉ định khỏi các mục dòng hiện có và các yêu cầu tìm nạp hoặc chỉ định các tuỳ chọn này sẽ dẫn đến lỗi.
Để tránh những lỗi này, bạn nên thường xuyên kiểm tra mã tuỳ chọn nhắm mục tiêu được lưu trữ. Để tiết kiệm hạn mức, bạn nên lưu các mã nhận dạng thường dùng vào bộ nhớ đệm. Tuy nhiên, việc lưu trữ mã nhận dạng có nghĩa là bạn có thể không nhận ra một tuỳ chọn nhắm mục tiêu đã ngừng hoạt động. Vì lý do này, bạn nên thường xuyên sử dụng targetingOptions.targetingTypes.get
để truy xuất tất cả mã tuỳ chọn nhắm mục tiêu đã lưu trữ để xác nhận rằng các mã này vẫn được Display & Video 360 hỗ trợ.
Hãy xem trang Các tính năng ngừng hoạt động đã thông báo để biết thông tin chi tiết về các tính năng ngừng hoạt động quan trọng trước đây và sắp tới.
Không tạo các yêu cầu đồng thời để cập nhật cùng một mục hàng
Nếu bạn cố gắng cập nhật chế độ cài đặt hoặc tiêu chí nhắm mục tiêu được chỉ định cho một mục hàng bằng nhiều yêu cầu đồng thời, hệ thống sẽ trả về lỗi. Các yêu cầu áp dụng bao gồm:
advertisers.lineItems.bulkEditAssignedTargetingOptions
advertisers.lineItems.bulkUpdate
advertisers.lineItems.patch
advertisers.lineItems.targetingTypes.assignedTargetingOptions.create
advertisers.lineItems.targetingTypes.assignedTargetingOptions.delete
Nếu cần thêm hoặc xoá nhiều lựa chọn nhắm mục tiêu đã chỉ định cho một mục hàng cùng một lúc, bạn nên sử dụng một yêu cầu advertisers.lineItems.bulkEditAssignedTargetingOptions
. Nếu bạn muốn cập nhật chế độ cài đặt và tiêu chí nhắm mục tiêu của một mục hàng, hãy đưa yêu cầu patch
hoặc bulkUpdate
và yêu cầu nhắm mục tiêu liên quan vào hàng đợi để đảm bảo yêu cầu thứ hai không được gửi cho đến khi yêu cầu đầu tiên trả về phản hồi.