Google Analytics Reporting APIでの発生したリクエスト数を確認する
Google APIには、リクエスト数の制限があります。
Google アナリティクスは数多くのサイトで使用されています。Google では、処理能力を超える負荷がシステムにかからないようにすること、システム リソースが均等に配分されるようにすることを目的に、API リクエストに制限と割り当てを設けています。この制限と割り当ては変更されることがあります。
Analytics Reporting APIもタダで使えますが、リクエスト数に制限があるので制限を超えるとエラーコードが返却されるようになります。
Google Cloud Platformのプロジェクトでは「割り当て(1 日あたりの API リクエスト数など)」というものが設定できます。 割り当ての詳細は、割り当ての操作 | ドキュメント | Google Cloudを参照してください。
Analytics Reporting APIのリクエスト数制限
API リクエストの制限と割り当て - Google Developersと上記割り当て(割り当ては初期値のまま)ではリクエスト数の単位がバラバラしていてわかりにくかったのでそれぞれの情報を表にして集めてみました。
単位 | リクエスト数上限 | 参照元 |
---|---|---|
プロジェクト | 50,000件/日 | [APIとサービス]の割り当て & API リクエストの制限と割り当て |
プロジェクト | 1,200件/分 | [APIとサービス]の割り当て |
プロジェクト | 2,000件/100秒 | API リクエストの制限と割り当て |
ユーザー 1 人につきプロジェクトごとで | 100件/100秒(1,000 件まで引き上げ可能) 10件/秒 |
API リクエストの制限と割り当て |
ユーザー | 600件/分 | [APIとサービス]の割り当て |
ビュー | 10,000件/日(引き下げ不可) | API リクエストの制限と割り当て |
プロジェクトごとのリクエストの失敗(プロファイルあたり) | 10件/時 かつ 50件/日 | Reporting API のリクエスト エラーについて - API リクエストの制限と割り当て |
表を見ていて気が付いたのは「1日単位の制限」を守っても「1秒や100秒単位の制限」を守らないとエラーになってしまうということでした。特定の時間にどっとリクエストがくるとエラーになる可能性があるのですね。
Google Analytics Reporting APIでの発生したリクエスト数を確認します。
リクエスト数に制限があるので、APIを使うアプリケーションを作る場合にどのくらいリクエスト数が発生するかを確認したいと思いました。
Google APIのリクエスト数は[APIとサービス]の[ダッシュボード]で確認できます。
API 指標を表示する最も簡単な方法は、Google Cloud Console の API ダッシュボードを使用することです。すべての API の使用状況の概要を表示することも、特定の API の使用状況を詳細に調べることもできます。
- Google Cloud Platformにログインする
- 左上メニュー > [APIとサービス] > [ダッシュボード]で画面遷移する
各APIのリクエスト数を[割り当て]で詳しく確認します。
[ダッシュボード]ではAPI毎の「任意期間での合計リクエスト数」を確認できましたが、使っている特定APIのリクエスト数をもっと詳しく確認したい、そのんな時のことです。 例えば、今回はGoogle Analytics Reporting APIについて詳しく見てみます。
- [ダッシュボード]画面一覧表から[Analytics Reporting API]リンクで画面遷移する
- 左メニュー > [割り当て]で画面遷移する
- [Requests]の右にある「v」で詳細を表示 > プルダウンで[Requests1分あたり]を選択 > 表示期間を選択
- 表示される「平均」の期間は「表示期間」によって変わるようなので細かく見る場合は注意する
各ユーザーのリクエスト数を[指標]で確認します。
[割り当て]画面の下には制限数の一覧表があります。
「Requests 1 分あたり /ユーザー」という行がとても気になります。
そこで探し回っていると、[割り当て]と同じくAnalytics Reporting APIの[指標]をから各ユーザーのリクエスト数が確認できました。
- [ダッシュボード]画面一覧表から[Analytics Reporting API]リンクで画面遷移する
- 左メニュー > [指標]で画面遷移する
- [Credentials]プルダウンで見たいユーザーを選択 > [OK]ボタン > 表示期間を選択
1回のAPI呼出しにリクエストを複数指定してもリクエストは1回?
Analytics Reporting APIでは、1回のAPI呼出しにリクエストを5つまで含めることができます。
リクエストは最大で 5 つ送信できます。すべてのリクエストには、同じ dateRanges、viewId、segments、samplingLevel、および cohortGroup が含まれている必要があります。
メソッド: reports.batchGet | アナリティクス Reporting API v4 | Google Developers
1回のAPI呼出しにリクエストを複数指定するとカウントアップされるリクエスト回数は何回なのでしょうか?
let dateRanges = [{startDate: '2021-03-29', endDate: '2021-03-30'}] const res = await client.reports.batchGet({ requestBody: { reportRequests: [ { viewId: VIEW_ID, dateRanges: dateRanges, dimensions: [{name: 'ga:pagePath'}], metrics: [{expression: 'ga:pageviews'}, {expression: 'ga:avgTimeOnPage'}], }, { viewId: VIEW_ID, dateRanges: dateRanges, dimensions: [{name: 'ga:sourceMedium'}], metrics: [{expression: 'ga:bounceRate'}, {expression: 'ga:avgTimeOnPage'}], }, { viewId: VIEW_ID, dateRanges: dateRanges, dimensions: [{name: 'ga:source'}], metrics: [{expression: 'ga:pageviews'}], }, { viewId: VIEW_ID, dateRanges: dateRanges, dimensions: [{name: 'ga:browser'}], metrics: [{expression: 'ga:pageviews'}], }, { viewId: VIEW_ID, dateRanges: dateRanges, dimensions: [{name: 'ga:country'}], metrics: [{expression: 'ga:pageviews'}], } ] } })
なんと1件しかカウントアップされませんでした。同じ期間などを条件にするのであればまとめてAPI呼出ししたほうがお得なのかもしれません。
とはいえGoogleのドキュメントにある以下の記載は気になるところです。
★注: バッチ処理で複数の Reporting API リクエストを 1 回のリクエストにまとめても、定められた割り当て量を超えるリクエストを実行することはできません。
「バッチ処理」のリンク先がGoogle アナリティクス Management APIのGoogle アナリティクス API リクエストのバッチ処理になっているのでManagement APIを使った時のことなのかもしれませんが、実装の時には気をつけるポイントになりそうです。(Google アナリティクス Management APIを知らないのですが・・・)