Google Sheets API は共有サービスであり、すべてのユーザーの Google Workspace システム全体のパフォーマンスを保護するために、割り当てと制限が適用されます。
割り当て上限
Sheets API には API リクエストのサイズ上限はありませんが、Google Sheets で制御されないさまざまな処理コンポーネントによって制限が発生する可能性があります。リクエストを高速化するには、最大ペイロードを 2 MB にすることをおすすめします。
Sheets API には分単位の割り当てがあり、割り当ては 1 分ごとに更新されます。
たとえば、1 つのプロジェクトで 1 分あたりに 300 件の読み取りリクエスト上限があります。アプリから 1 分間に 350 件のリクエストが送信された場合、残りの 50
件のリクエストは割り当てを超過するため、「429: Too many requests」の HTTP ステータス コード
レスポンスが生成されます。この場合は、
指数バックオフ アルゴリズムを使用する必要があります。
1 分後、リクエストを再度実行できます。
次の表に、リクエストの上限を示します。
| 割り当て | |||||
|---|---|---|---|---|---|
| 読み取りリクエスト |
|
||||
| 書き込みリクエスト |
|
||||
ファイルの上限について詳しくは、Google ドライブに保存可能なファイルをご覧ください。
動作と制限事項
((sheets_api_short)) を使用する場合は、割り当てに影響する次の動作と制限事項に注意してください。
読み取りリクエストは、スプレッドシートからデータを取得するメソッド(
getやsearchなど)の呼び出しです。書き込みリクエストは、スプレッドシートを変更するメソッド(update、clear、copyToなど)の呼び出しです。割り当て上限内であれば、複数のリクエストを同時に送信できます。サブ リクエストを含む各バッチ リクエストは、使用量上限に対して 1 つの API リクエストとして カウントされます。
すべての Sheets リクエストはアトミックに適用されます。つまり、いずれかのリクエストが無効な場合、更新全体が失敗し、依存関係のある変更は適用されません。
1 つの API リクエストの処理には最大時間制限があります。Sheets が 180 秒以上リクエストを処理すると、リクエストはタイムアウト エラーを返します。
分単位の割り当て内であれば、1 日に送信できるリクエスト数に制限はありません。
時間ベースの割り当てエラーを解決する
時間ベースのエラー(X 分あたり最大 N 件のリクエスト)については、 コードで例外をキャッチし、切り捨てられた指数バックオフを使用して、 デバイスが過剰な負荷を生成しないようにすることをおすすめします。
指数バックオフは、ネットワーク アプリケーションに使われる標準的なエラー処理方法です。 指数バックオフのアルゴリズムは、リクエスト間の待ち時間の間隔を最大バックオフ時間まで増加させながら、指数関数的にリクエストを再試行します。 リクエストがまだ成功しない場合は、 リクエストが成功するまでリクエスト間の遅延を徐々に増やすことが重要です。
アルゴリズムの例
指数バックオフのアルゴリズムは、再試行の待ち時間の間隔を最大バックオフ時間まで増加させながら、指数関数的にリクエストを再試行します。次に例を示します。
- Google Sheets API にリクエストを送信します。
- リクエストが失敗した場合は、1 +
random_number_milliseconds待ってからリクエストを再試行します 。 - リクエストが失敗した場合は、2 +
random_number_milliseconds待ってからリクエストを再試行します 。 - リクエストが失敗した場合は、4 +
random_number_milliseconds待ってからリクエストを再試行します 。 - このようにして、最大
maximum_backoff時間まで繰り返します。 - 最大再試行回数まで待機と再試行を繰り返しますが、再試行間の待機時間 は増やしません。
ここで
- 待機時間は
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 コンソールの[割り当て] ページ からリクエストできます。
詳細については、次のリソースをご覧ください。