Kể từ ngày 8 tháng 9 năm 2025, mỗi mục hàng mới sẽ cần phải khai báo xem mục hàng đó có phân phát quảng cáo chính trị ở Liên minh Châu Âu (EU) hay không. Display & Video 360 API và các tệp SDF được tải lên mà không cung cấp thông tin khai báo sẽ không thành công. Hãy xem trang thông báo về những nội dung không dùng nữa để biết thêm thông tin về cách cập nhật quy trình tích hợp để đưa ra nội dung khai báo này.
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Tất cả mục hàng được tạo bằng API Display & Video 360 ban đầu đều ở trạng thái nháp. Ở trạng thái nháp này, các mục hàng không phân phát quảng cáo. Vì vậy, bạn có thể tự do điều chỉnh chế độ cài đặt và tiêu chí nhắm mục tiêu mà những thay đổi đó không ảnh hưởng đến hoạt động phân phát quảng cáo hiện tại. Trang này mô tả các bước bạn nên thực hiện để xác nhận rằng mục hàng đã sẵn sàng phân phát quảng cáo và cách cập nhật trạng thái của mục hàng đó thành đang hoạt động.
Việc cần làm trước khi kích hoạt
Do mục hàng là cách chi tiêu doanh thu quảng cáo thông qua việc mua và phân phát quảng cáo, nên điều quan trọng là phải đảm bảo rằng mục hàng sẽ phân phát quảng cáo như dự kiến khi được kích hoạt. Dưới đây là một số điều cần cân nhắc trước khi kích hoạt mục hàng:
Đảm bảo chế độ cài đặt chiến dịch phát sóng đúng cách: Kiểm tra trường flight của mục hàng để đảm bảo rằng bạn đã đặt đúng khoảng thời gian phát sóng cho mục hàng. Khoảng thời gian phát sóng của một mục hàng có thể được tuỳ chỉnh cho mục hàng đó hoặc được kế thừa từ đơn đặt hàng quảng cáo mẹ.
Xác minh rằng không có cảnh báo nào chặn việc phân phát mục hàng:
Sử dụng advertisers.lineItems.get để truy xuất tài nguyên mục hàng
và kiểm tra trường warningMessages để xác minh rằng
mục hàng không có cảnh báo nào có thể cản trở việc phân phát mục hàng. Enum LineItemWarningMessage ghi nhận tác động của từng cảnh báo.
Xác nhận rằng tất cả tài nguyên mẹ cũng đang hoạt động: Một mục hàng đang hoạt động sẽ không bắt đầu phân phát quảng cáo nếu nhà quảng cáo, chiến dịch hoặc đơn đặt hàng chèn mẹ của mục hàng đó không hoạt động. Truy xuất các tài nguyên này bằng các phương thức GET trong các dịch vụ Nhà quảng cáo, Chiến dịch và Lệnh chèn.
Kích hoạt mục hàng
Kích hoạt một mục hàng bằng cách cập nhật trường entityStatus của mục hàng đó thành ENTITY_STATUS_ACTIVE. Bạn có thể cập nhật trường này cho một mục hàng riêng lẻ bằng phương thức advertisers.lineItems.patch và cho nhiều mục hàng trong một nhà quảng cáo nhất định bằng advertisers.lineItems.bulkUpdate.
Dưới đây là ví dụ về cách sử dụng bulkUpdate để kích hoạt nhiều mục hàng:
Java
// Create the line item structure.LineItemtargetLineItem=newLineItem();targetLineItem.setEntityStatus("ENTITY_STATUS_ACTIVE");// Create the bulk update request body.BulkUpdateLineItemsRequestrequestBody=newBulkUpdateLineItemsRequest();requestBody.setLineItemIds(line-item-ids);requestBody.setTargetLineItem(targetLineItem);requestBody.setUpdateMask("entityStatus");// Configure the bulk update request.LineItems.BulkUpdaterequest=service.advertisers().lineItems().bulkUpdate(advertiser-id,requestBody);// Update the line items.BulkUpdateLineItemsResponseresponse=request.execute();// Display the line items that were updated, failed, and skipped.if(response.getUpdatedLineItemIds()!=null){System.out.printf("The following line item IDs were successfully updated: %s.\n",Arrays.toString(response.getUpdatedLineItemIds().toArray()));}if(response.getFailedLineItemIds()!=null){System.out.printf("The following line item IDs failed to update: %s.\n",Arrays.toString(response.getFailedLineItemIds().toArray()));if(response.getErrors()!=null){System.out.printf("The failed updates were caused by the following errors: %s.\n",Arrays.toString(response.getErrors().toArray()));}}if(response.getSkippedLineItemIds()!=null){System.out.printf("The following line items IDs were skipped in the update: %s.\n",Arrays.toString(response.getSkippedLineItemIds().toArray()));}
Python
# Create a line item object with only updated entity status.line_item_obj={'entityStatus':'ENTITY_STATUS_ACTIVE'}# Build the bulk update request.bulk_update_request={'lineItemIds':line-item-ids,'targetLineItem':line_item_obj,'updateMask':"entityStatus"}# Update the line items.response=service.advertisers().lineItems().bulkUpdate(advertiserId=advertiser-id,body=bulk_update_request).execute()# Display the line items that were updated, failed, and skipped.if'updatedLineItemIds'inresponse:print("The following line item IDs were updated: %s"%response['updatedLineItemIds'])if'failedLineItemIds'inresponse:print("The following line item IDs failed to update: %s"%response['failedLineItemIds'])if'errors'inresponse:print("The failed updates were caused by the following errors:")forerrorinresponse["errors"]:print("Error code: %s, Message: %s"%(error["code"],error["message"]))if'skippedLineItemIds'inresponse:print("The following line items IDs were skipped in the update:: %s"%response['skippedLineItemIds'])
PHP
// Create request body.$body = new Google_Service_DisplayVideo_BulkUpdateLineItemsRequest();$body->setLineItemIds(line-item-ids);// Create target line item with updated fields.$lineItem = new Google_Service_DisplayVideo_LineItem();$lineItem->setEntityStatus('ENTITY_STATUS_ACTIVE');$body->setTargetLineItem($lineItem);// Set update mask in request body.$body->setUpdateMask("entityStatus");// Call the API, updating the entity status for the identified line item.$response = $service->advertisers_lineItems->bulkUpdate(advertiser-id, $body);// Display the line items that were updated, failed, and skipped.if (!empty($response->getUpdatedLineItemIds())) { printf('The following line item IDs were updated:\n'); foreach ($response->getUpdatedLineItemIds() as $id) { printf('%s\n', $id); }}if (!empty($response->getFailedLineItemIds())) { print('The following line item IDs failed to update:\n'); foreach ($response->getFailedLineItemIds() as $id) { printf('%s\n', $id); } if (!empty($response->getErrors())) { 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() ); } }}if (!empty($response->getSkippedLineItemIds())) { print('The following line item IDs were skipped in the update:\n'); foreach ($response->getSkippedLineItemIds() as $id) { printf('%s\n', $id); }}
[null,null,["Cập nhật lần gần đây nhất: 2025-07-25 UTC."],[[["\u003cp\u003eAll Display & Video 360 line items begin in a draft state where they can be freely adjusted without impacting ad serving.\u003c/p\u003e\n"],["\u003cp\u003eBefore activating a line item, ensure the flight settings, absence of warning messages, and the active status of parent resources (advertiser, campaign, insertion order).\u003c/p\u003e\n"],["\u003cp\u003eActivate a line item by changing its \u003ccode\u003eentityStatus\u003c/code\u003e to \u003ccode\u003eENTITY_STATUS_ACTIVE\u003c/code\u003e via the \u003ccode\u003eadvertisers.lineItems.patch\u003c/code\u003e or \u003ccode\u003eadvertisers.lineItems.bulkUpdate\u003c/code\u003e methods.\u003c/p\u003e\n"],["\u003cp\u003eAvoid concurrent \u003ccode\u003epatch\u003c/code\u003e or \u003ccode\u003ebulkUpdate\u003c/code\u003e requests with other updates targeting the same line items or their targeting configurations.\u003c/p\u003e\n"]]],["Line items in the Display & Video 360 API are initially in draft and don't serve ads. Before activation, verify the line item's flight settings, check for warnings using `advertisers.lineItems.get`, and ensure parent resources (advertiser, campaign, insertion order) are active. To activate, update the `entityStatus` to `ENTITY_STATUS_ACTIVE` using `advertisers.lineItems.patch` or `advertisers.lineItems.bulkUpdate`. Concurrent updates to the same line items should be avoided. The provided code samples show how to activate multiple line items using `bulkUpdate`.\n"],null,["# Activate Line Item\n\nAll line items created using the Display \\& Video 360 API are initially created in a draft\nstate. In this draft state, line items don't serve ads, so you are free to\nadjust settings and targeting without those changes affecting any current ad\nserving. This page describes the steps you should take to confirm that your line\nitem is ready for serving ads, and how to update its status to active.\n\nWhat to do before activation\n----------------------------\n\nGiven that line items are the manner in which your ad revenue is spent through\nad buying and serving, it is important to make sure that the line item will\nserve ads as intended when activated. Below are a few things to consider before\nactivating your line item:\n\n- **Make sure the flight settings are correct:** Check the line item's [`flight`](/display-video/api/reference/rest/current/advertisers.lineItems#LineItem.FIELDS.flight) field to make sure that the flight window for the line item is set correctly. The flight window of a line item may be custom to the line item or inherited by the parent insertion order.\n- **Verify that there are no warnings blocking the serving of the line item:** Use [`advertisers.lineItems.get`](/display-video/api/reference/rest/current/advertisers.lineItems/get) to retrieve a line item resource and check the field [`warningMessages`](/display-video/api/reference/rest/current/advertisers.lineItems#LineItem.FIELDS.warning_messages) to verify that the line item has no warnings that may hinder the serving of the line item. The [`LineItemWarningMessage`](/display-video/api/reference/rest/current/advertisers.lineItems#lineitemwarningmessage) enum notes the impact of each warning.\n- **Confirm that all parent resources are also active:** An active line item will not begin to serve ads if its parent advertiser, campaign, or insertion order are not active. Retrieve these resources using the `GET` methods in the [Advertisers](/display-video/api/reference/rest/current/advertisers), [Campaigns](/display-video/api/reference/rest/current/advertisers.campaigns), and [Insertion Orders](/display-video/api/reference/rest/current/advertisers.insertionOrders) services.\n\nActivate a line item\n--------------------\n\nActivate a line item by updating its [`entityStatus`](/display-video/api/reference/rest/current/advertisers.lineItems#LineItem.FIELDS.entity_status) field to\n`ENTITY_STATUS_ACTIVE`. You can update this field for an individual line item\nusing the [`advertisers.lineItems.patch`](/display-video/api/reference/rest/current/advertisers.lineItems/patch) method and for multiple line\nitems within a given advertiser using\n[`advertisers.lineItems.bulkUpdate`](/display-video/api/reference/rest/current/advertisers.lineItems/bulkUpdate).\n| **Warning:** Do not make [`patch`](/display-video/api/reference/rest/current/advertisers.lineItems/patch) or [`bulkUpdate`](/display-video/api/reference/rest/current/advertisers.lineItems/bulkUpdate) requests concurrently with other requests updating the same line items or their targeting.\n\nHere's an example of how to use [`bulkUpdate`](/display-video/api/reference/rest/current/advertisers.lineItems/bulkUpdate) to activate\nmultiple line items: \n\n### Java\n\n```java\n// Create the line item structure.\nLineItem targetLineItem = new LineItem();\ntargetLineItem.setEntityStatus(\"ENTITY_STATUS_ACTIVE\");\n\n// Create the bulk update request body.\nBulkUpdateLineItemsRequest requestBody = new BulkUpdateLineItemsRequest();\nrequestBody.setLineItemIds(line-item-ids);\nrequestBody.setTargetLineItem(targetLineItem);\nrequestBody.setUpdateMask(\"entityStatus\");\n\n// Configure the bulk update request.\nLineItems.BulkUpdate request = service.advertisers().lineItems()\n .bulkUpdate(advertiser-id, requestBody);\n\n// Update the line items.\nBulkUpdateLineItemsResponse response = request.execute();\n\n// Display the line items that were updated, failed, and skipped.\nif (response.getUpdatedLineItemIds() != null) {\n System.out.printf(\n \"The following line item IDs were successfully updated: %s.\\n\",\n Arrays.toString(response.getUpdatedLineItemIds().toArray()));\n}\nif (response.getFailedLineItemIds() != null) {\n System.out.printf(\"The following line item IDs failed to update: %s.\\n\",\n Arrays.toString(response.getFailedLineItemIds().toArray()));\n if (response.getErrors() != null) {\n System.out.printf(\n \"The failed updates were caused by the following errors: %s.\\n\",\n Arrays.toString(response.getErrors().toArray()));\n }\n}\nif (response.getSkippedLineItemIds() != null) {\n System.out.printf(\n \"The following line items IDs were skipped in the update: %s.\\n\",\n Arrays.toString(response.getSkippedLineItemIds().toArray()));\n}\n```\n\n### Python\n\n```python\n# Create a line item object with only updated entity status.\nline_item_obj = {\n 'entityStatus': 'ENTITY_STATUS_ACTIVE'\n}\n\n# Build the bulk update request.\nbulk_update_request = {\n 'lineItemIds': line-item-ids,\n 'targetLineItem': line_item_obj,\n 'updateMask': \"entityStatus\"\n}\n\n# Update the line items.\nresponse = service.advertisers().lineItems().bulkUpdate(\n advertiserId=advertiser-id,\n body=bulk_update_request\n).execute()\n\n# Display the line items that were updated, failed, and skipped.\nif 'updatedLineItemIds' in response:\n print(\"The following line item IDs were updated: %s\"\n % response['updatedLineItemIds'])\nif 'failedLineItemIds' in response:\n print(\"The following line item IDs failed to update: %s\"\n % response['failedLineItemIds'])\n if 'errors' in response:\n print(\"The failed updates were caused by the following errors:\")\n for error in response[\"errors\"]:\n print(\"Error code: %s, Message: %s\" % (error[\"code\"], error[\"message\"]))\nif 'skippedLineItemIds' in response:\n print(\"The following line items IDs were skipped in the update:: %s\"\n % response['skippedLineItemIds'])\n```\n\n### PHP\n\n```php\n// Create request body.\n$body = new Google_Service_DisplayVideo_BulkUpdateLineItemsRequest();\n$body-\u003esetLineItemIds(\u003cvar translate=\"no\"\u003eline-item-ids\u003c/var\u003e);\n\n// Create target line item with updated fields.\n$lineItem = new Google_Service_DisplayVideo_LineItem();\n$lineItem-\u003esetEntityStatus('ENTITY_STATUS_ACTIVE');\n$body-\u003esetTargetLineItem($lineItem);\n\n// Set update mask in request body.\n$body-\u003esetUpdateMask(\"entityStatus\");\n\n// Call the API, updating the entity status for the identified line item.\n$response = $service-\u003eadvertisers_lineItems-\u003ebulkUpdate(\n \u003cvar translate=\"no\"\u003eadvertiser-id\u003c/var\u003e,\n $body\n);\n\n// Display the line items that were updated, failed, and skipped.\nif (!empty($response-\u003egetUpdatedLineItemIds())) {\n printf('The following line item IDs were updated:\\n');\n foreach ($response-\u003egetUpdatedLineItemIds() as $id) {\n printf('%s\\n', $id);\n }\n}\nif (!empty($response-\u003egetFailedLineItemIds())) {\n print('The following line item IDs failed to update:\\n');\n foreach ($response-\u003egetFailedLineItemIds() as $id) {\n printf('%s\\n', $id);\n }\n if (!empty($response-\u003egetErrors())) {\n print('The failed updates were caused by the following errors:\\n');\n foreach ($response-\u003egetErrors() as $error) {\n printf(\n 'Error Code: %s, Message: %s\\n',\n $error-\u003egetCode(),\n $error-\u003egetMessage()\n );\n }\n }\n}\nif (!empty($response-\u003egetSkippedLineItemIds())) {\n print('The following line item IDs were skipped in the update:\\n');\n foreach ($response-\u003egetSkippedLineItemIds() as $id) {\n printf('%s\\n', $id);\n }\n}\n```"]]