对结果进行分页

您可以使用 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 会返回错误,您必须开始新的查询。

您的查询在后续请求中必须保持不变,才能利用缓存的数据。后续分页请求不会计入探索者访问权限和基本访问权限的每日操作配额。如果查询不同,并且与同一页面令牌一起发送,则会返回错误。