結果をページ分割する

結果セット全体を一度にダウンロードするのではなく、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 が入力されません。

クライアント ライブラリはページングを自動的に処理します。自動的にページングが処理されます。現在のページのすべての行が返されると、クライアント ライブラリは、データセット全体が取得されるまで、新しい行のページを自動的に取得します。gRPC ではなく REST を使用する場合は、新しいページごとに明示的にリクエストを行う必要があります。

キャッシュ保存とページトークンの有効期限

Google Ads API は、データセットを内部でキャッシュに保存するため、後続のページ リクエストは最初のリクエストよりも高速になります。next_page_token 値には有効期間(TTL)が設定されており、短期間(約 2 時間)で使用されないと期限切れになります。ページトークンの有効期限が切れると、API はエラーを返します。新しいクエリを開始する必要があります。

キャッシュに保存されたデータを利用するには、後続のリクエストでもクエリが同じである必要があります。後続のページングされたリクエストは、Explorer アクセスとBasic アクセスの 1 日のオペレーション割り当てに対して追加のオペレーションとしてカウントされません。クエリが異なり、同じページトークンとともに送信された場合は、エラーが返されます。