使用量上限

Google Sheets API は共有サービスであるため、すべてのユーザーが公平に使用し、Google Workspace システム全体の健全性を維持するために、割り当てと制限が適用されます。

割り当て上限

Sheets API には API リクエストに対するハードサイズの制限はありませんが、スプレッドシートで制御されないさまざまな処理コンポーネントによって制限を受ける場合があります。リクエストを高速化するため、最大ペイロードは 2 MB です。

Sheets API には 1 分単位の割り当てがあり、1 分ごとに補充されます。たとえば、プロジェクトごとに 1 分あたり 300 件の読み取りリクエストの上限があります。アプリが 1 分に 350 件のリクエストを送信すると、残りの 50 件のリクエストが割り当てを超過し、429: Too many requests HTTP ステータス コード レスポンスが生成されます。この場合は、指数バックオフ アルゴリズムを使用する必要があります。1 分後にリクエストを再実行できます。割り当ての上限を超えていなければ、ユーザーは複数のリクエストを同時に送信できます。

すべてのスプレッドシート リクエストはアトミックに適用されます。つまり、いずれかのリクエストが有効でない場合、アップデート全体は失敗し、依存する可能性のある変更は適用されません。

次の表に、リクエストの上限の詳細を示します。分単位の割り当て内であれば、1 日に実行できるリクエストの数に制限はありません。

割り当て
読み取りリクエスト
プロジェクトあたり 1 分あたり 300
ユーザーごと、プロジェクトごとに 1 分あたり 60
書き込みリクエスト
プロジェクトあたり 1 分あたり 300
ユーザーごと、プロジェクトごとに 1 分あたり 60

ファイルの制限について詳しくは、Google ドライブに保管可能なファイルをご覧ください。

時間ベースの割り当てエラーを解決する

すべての時間ベースのエラー(X 分あたり最大 N リクエスト)については、コードで例外を捕捉し、切り捨て型指数バックオフを使用して、デバイスが過負荷にならないようにすることをおすすめします。

指数バックオフは、ネットワーク アプリケーションの標準的なエラー処理方法です。指数バックオフのアルゴリズムは、リクエスト間の指数関数的増加時間を使用して、最大バックオフ時間までリクエストを再試行します。それでもリクエストが失敗する場合は、リクエストが成功するまでリクエスト間の遅延が時間とともに増加することが重要です。

アルゴリズムの例

指数バックオフのアルゴリズムは、再試行の待ち時間を最長バックオフ時間まで増加させながら、指数関数的にリクエストを再試行します。次に例を示します。

  1. Google Sheets API にリクエストを送信します。
  2. リクエストが失敗した場合、1 + random_number_milliseconds のリクエストを待ってから、リクエストを再試行します。
  3. リクエストが失敗した場合、2 + random_number_milliseconds を待機してからリクエストを再試行します。
  4. リクエストが失敗した場合、4 + random_number_milliseconds を待機してからリクエストを再試行します。
  5. このようにして、最大 maximum_backoff 時間まで繰り返します。
  6. 再試行の最大回数に達するまで待機と再試行を続けるが、再試行間の待機時間は延長しない。

ここで

  • 待機時間は min(((2^n)+random_number_milliseconds), maximum_backoff) で、n は反復(リクエスト)のたびに 1 ずつ増加します。
  • random_number_milliseconds は、1,000 ミリ秒以下の乱数です。これにより、状況によっては多くのクライアントが同期し、一度に再試行をもう一度行うことを避けて、同期されたウェーブでリクエストを送信できます。random_number_milliseconds の値は、再試行リクエストごとに再計算されます。
  • 通常、maximum_backoff は 32 秒または 64 秒です。適切な値はユースケースによって異なります。

クライアントは、maximum_backoff 時間に達した後も再試行を続行できます。 この時点以降に再試行しても、バックオフ時間を延ばす必要はありません。たとえば、クライアントが maximum_backoff 時間の 64 秒を使用している場合、この値に達すると、クライアントは 64 秒ごとに再試行できます。ある時点で、クライアントが無期限に再試行されないようにする必要があります。

再試行の間隔と再試行回数は、ユースケースとネットワークの状態によって異なります。

料金

Google Sheets API はすべて追加料金なしでご利用いただけます。割り当てリクエストの制限を超過しても追加料金は発生せず、アカウントへの請求は行われません。

割り当ての増加をリクエストします

プロジェクトのリソース使用量に応じて、割り当ての増加をリクエストできます。サービス アカウントによる API 呼び出しでは、単一のアカウントが使用されていると見なされます。割り当ての増加を申請しても、承認が保証されるわけではありません。割り当ての増加が大きいと、承認に時間がかかることがあります。

割り当て量はすべてのプロジェクトで同じとは限りません。時間の経過とともに Google Cloud を使用するにつれて、割り当ての増加が必要になる場合があります。使用量の大幅な増加が見込まれる場合は、事前に Google Cloud コンソールの [割り当て] ページから割り当ての調整をリクエストできます。

詳細については、次のリソースをご覧ください。