Bạn có thể phân trang qua các kết quả được truy xuất bằng GoogleAdsService.Search thay vì tải toàn bộ tập kết quả xuống cùng một lúc. Để xem thông tin tổng quan về báo cáo bằng Google Ads API, hãy xem bài viết Tổng quan về báo cáo.
Search trả về các trang cố định có tối đa 10.000 hàng. Việc thiết lập page_size trong SearchGoogleAdsRequest không được dùng nữa và trả về lỗi RequestError.PAGE_SIZE_NOT_SUPPORTED.
Ví dụ về truy vấn và phân trang
Hãy xem xét truy vấn sau:
SELECT
ad_group.id,
ad_group_criterion.type,
ad_group_criterion.criterion_id,
ad_group_criterion.keyword.text,
ad_group_criterion.keyword.match_type
FROM ad_group_criterion
WHERE ad_group_criterion.type = KEYWORD
Nếu tài khoản của bạn có 50.000 từ khoá, thì tập kết quả sẽ chứa 10.000 đối tượng GoogleAdsRow trong phản hồi đầu tiên, cùng với một next_page_token.
Để truy xuất 10.000 hàng tiếp theo, hãy gửi lại yêu cầu, nhưng cập nhật page_token của yêu cầu thành next_page_token của phản hồi:
{
"query": "SELECT ad_group.id, ad_group_criterion.type, ad_group_criterion.criterion_id, ad_group_criterion.keyword.text, ad_group_criterion.keyword.match_type FROM ad_group_criterion WHERE ad_group_criterion.type = KEYWORD",
"pageToken": "CN3q9...example_token..."
}
Xin lưu ý rằng next_page_token không được điền sẵn trong phản hồi chứa lô hàng cuối cùng của các hàng.
Thư viện ứng dụng của chúng tôi tự động xử lý việc phân trang. Bạn chỉ cần lặp lại các hàng của phản hồi. Khi tất cả các hàng trong trang hiện tại đã được trả về, thư viện ứng dụng sẽ tự động tìm nạp một trang hàng mới thay cho bạn cho đến khi toàn bộ tập dữ liệu được truy xuất. Nếu sử dụng REST thay vì gRPC, bạn phải đưa ra yêu cầu rõ ràng cho mỗi trang mới.
Lưu vào bộ nhớ đệm và thời gian hết hạn của mã thông báo trang
Google Ads API lưu vào bộ nhớ đệm nội bộ tập dữ liệu để các yêu cầu trang tiếp theo nhanh hơn yêu cầu ban đầu. Xin lưu ý rằng các giá trị next_page_token có thời gian tồn tại (TTL) giới hạn và sẽ hết hạn nếu không được sử dụng trong một khoảng thời gian ngắn (khoảng 2 giờ). Nếu mã thông báo trang hết hạn, API sẽ trả về một lỗi và bạn phải bắt đầu một truy vấn mới.
Truy vấn của bạn phải giữ nguyên trong các yêu cầu tiếp theo để tận dụng dữ liệu được lưu vào bộ nhớ đệm. Các yêu cầu được phân trang tiếp theo không được tính là các thao tác bổ sung vào hạn mức thao tác hằng ngày của bạn đối với quyền truy cập vào Trình khám phá và quyền truy cập cơ bản. Nếu truy vấn khác và được gửi cùng với mã thông báo trang giống nhau, thì sẽ có lỗi trả về.