CData Software Blog

クラウド連携のCData Software の技術ブログです。

Google Sheets APIでQuota exceeded エラーが発生した場合の解決方法

本記事は、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を検索してリンクを開きます。

f:id:kuwazzy:20190416190117p:plain

左バーからAPI使用量を確認するためにQuotasを選択します。ReadとWriteに上下に別れた2つの折れ線グラフが表示されます。セレクターから、「Read requests per 100 seconds」に設定して表示期間を「1h」に設定すると、1分毎の平均の「100秒あたりの読み込みリクエスト数」を確認することが出来ます。

f:id:kuwazzy:20190416190133p:plain

各グラフの右側を見ると、あなたのプロジェクトに割り当てられている制限値を確認することが出来ます。

f:id:kuwazzy:20190416190150p:plain

上記スクリーンでは[Read requests per 100 seconds]が500となっておりますが、デフォルトは100です。

編集アイコンをクリックしてみます。すると、制限されている範囲でリクエスト数上限を変更することが出来ます。ただし、上限値は割り当てられている制限値となります。説明には「apply for highler quate」と制限値を増やしたい場合はリンクをクリックするように記載があります。

f:id:kuwazzy:20190416190219p:plain

リンクをクリックするとAPI制限を増やすための申請フォームが表示されます。必要事項を登録して「送信」します。

f:id:kuwazzy:20190416190226p:plain

後日(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)f:id:kuwazzy:20190416190202p:plain

これで、APIリクエストが増えても増やした制限の範囲(100 -> 500)であればエラーは発生しなくなります。 筆者の場合は、リクエストを出してから約1週間(8日)で制限を増やしてもらうことが出来ましたが、どのような基準や日数で判断しているのかは分かっておりませんので同じエラーで困っている方はお試し頂く価値はあるのかなと思います。

最後に

筆者の所属するCData Software Japanでは、Google SheetsのデータをODBCJDBCといった標準データアクセスインタフェースからSQL操作することができるデータドライバー製品を開発・販売してます。Gppgle SheetsのデータをBIツールから分析、他システムと連携などの用途でご利用頂けますので是非使ってみてください(全製品30日間無償トライアルあり)。

f:id:kuwazzy:20190418085239p:plain