本記事は、Google Sheets APIを使用している時に「Quota exceeded...」エラーが発生した場合の解決方法です。
エラー内容
「Quota exceeded...」エラーが発生した場合には、Google Sheets APIはステータスコードが429で以下のレスポンス情報を返します。
{ "error": { "code": 429, "message": "Quota exceeded for quota group 'ReadGroup' and limit 'USER-100s' of service 'sheets.googleapis.com' for consumer 'project_number:999999999]'.", "status": "RESOURCE_EXHAUSTED", "details": [ { "@type": "type.googleapis.com/google.rpc.Help", "links": [ { "description": "Google developer console API key", "url": "https://console.developers.google.com/project/44338374211/apiui/credential" } ] } ] } }
原因
このエラーは、APIリクエストがGoogle Sheets APIの制限で、一つのプロジェクトで一定時間あたりのAPIリクエスト数が超過した場合に発生します。
制約 | 説明 |
---|---|
500 requests per 100 seconds per project | 500リクエスト / 100秒・プロジェクト |
100 requests per 100 seconds per user | 100リクエスト / 100秒・ユーザー |
- 読み・書きで別
- 日あたりの制限は無し
詳細は、以下のドキュメントをご覧ください。
Google Sheets API v4 - Usage Limits
APIリクエス数の確認、および、解決方法
Google APIsのAPIs & Servicesページを開きます。Dashboradが開いたら、Used APIsの中から該当のAPIを検索してリンクを開きます。
左バーからAPI使用量を確認するためにQuotasを選択します。ReadとWriteに上下に別れた2つの折れ線グラフが表示されます。セレクターから、「Read requests per 100 seconds」に設定して表示期間を「1h」に設定すると、1分毎の平均の「100秒あたりの読み込みリクエスト数」を確認することが出来ます。
各グラフの右側を見ると、あなたのプロジェクトに割り当てられている制限値を確認することが出来ます。
上記スクリーンでは[Read requests per 100 seconds]が500となっておりますが、デフォルトは100です。
編集アイコンをクリックしてみます。すると、制限されている範囲でリクエスト数上限を変更することが出来ます。ただし、上限値は割り当てられている制限値となります。説明には「apply for highler quate」と制限値を増やしたい場合はリンクをクリックするように記載があります。
リンクをクリックするとAPI制限を増やすための申請フォームが表示されます。必要事項を登録して「送信」します。
後日(8日後)、送信フォームで登録したEmail Addressに下記のメールが届きました。「(プロジェクトの)100秒あたりのリクエスト数を100から500に増やした」との内容です。
Hello XXXXXX
Thanks for your Sheets API quota request for project id: 9999999.
I understand that you've requested an increase in QPS limit, however, upon checking >our system, not enough usage accounted to your project was shown which is usually >our basis for the increase.
Courtesy quota is 500 queries per 100s Per User Limit is set to 100 queries per 100s
When the time comes that you need more than the default quota, feel free to notify us.
Regards,
XXXXXX
Developer Platform Support
実際にQuatusの画面で見ると500に増えてました。
(03.jpg)
これで、APIリクエストが増えても増やした制限の範囲(100 -> 500)であればエラーは発生しなくなります。 筆者の場合は、リクエストを出してから約1週間(8日)で制限を増やしてもらうことが出来ましたが、どのような基準や日数で判断しているのかは分かっておりませんので同じエラーで困っている方はお試し頂く価値はあるのかなと思います。
最後に
筆者の所属するCData Software Japanでは、Google SheetsのデータをODBCやJDBCといった標準データアクセスインタフェースからSQL操作することができるデータドライバー製品を開発・販売してます。Gppgle SheetsのデータをBIツールから分析、他システムと連携などの用途でご利用頂けますので是非使ってみてください(全製品30日間無償トライアルあり)。
- CData Google Sheets ODBC Driver
- CData Google Sheets JDBC Driver
- CData Google Sheets ADO.NET Provider
- CData Google Sheets SSIS Components
- CData Google Sheets BizTalk Adapter
- CData Google Sheets Connector for MuleSoft
- CData Excel Add-In for Google Sheets
- CData Google Sheets Power BI Connector
- CData Google Sheets FireDAC Components
- CData Sync for Google Sheets