您可以对使用 GoogleAdsService.Search 检索到的结果进行分页,而不是一次下载整个结果集。如需简要了解如何使用 Google Ads API 生成报告,请参阅报告概览。
Search 会返回固定页面,最多 10,000 行。在 SearchGoogleAdsRequest 中设置 page_size 已弃用,并会返回 RequestError.PAGE_SIZE_NOT_SUPPORTED 错误。
查询和分页示例
请考虑以下查询:
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
如果您的账号包含 50,000 个关键字,则结果集在第一个响应中包含 10,000 个 GoogleAdsRow 对象,以及一个 next_page_token。
如需检索接下来的 10,000 行,请再次发送请求,但将请求的 page_token 更新为响应的 next_page_token:
{
"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..."
}
请注意,next_page_token 不会填充到包含最后一批行的响应中。
我们的客户端库会自动处理分页。您只需遍历响应的行即可。当当前页面中的所有行都已返回时,客户端库会自动代表您提取新的行页面,直到检索到整个数据集。如果使用 REST 而不是 gRPC,则必须明确为每个新页面发出请求。
缓存和页面令牌过期
Google Ads API 会在内部缓存数据集,以便后续页面请求比初始请求更快。请注意,next_page_token 值的存留时间 (TTL) 有限,如果在短时间内(大约两小时)未使用,则会过期。如果页面令牌过期,API 会返回错误,您必须启动新查询。
您的查询在后续请求中必须保持不变,才能利用缓存的数据。后续分页请求不会计入探索者访问权限和基本访问权限的每日操作配额。如果查询不同,但与同一页面令牌一起发送,则会返回错误。