使用量上限

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

割り当てを超過すると、通常は 429: Too many requests HTTP ステータス コード レスポンスを受け取ります。その場合は、指数バックオフ アルゴリズムを使用して、しばらくしてからもう一度お試しください。以下の分単位の割り当てを超えなければ、1 日に実行できるリクエストの数に制限はありません。

注: フォーム ウォッチには追加の制限があります。詳細については、プッシュ通知の設定と受信をご覧ください。

次の表に、リクエストの上限の詳細を示します。

割り当て
読み取りリクエスト
1 プロジェクト、1 日あたり 無制限
1 プロジェクト、1 分あたり 975
1 ユーザー、1 プロジェクト、1 分あたり 390
負荷の高い読み取りリクエスト

forms.responses.list リクエストに使用)。

1 プロジェクト、1 日あたり 無制限
1 プロジェクト、1 分あたり 450
1 ユーザー、1 プロジェクト、1 分あたり 180
書き込みリクエスト
1 プロジェクト、1 日あたり 無制限
1 プロジェクト、1 分あたり 375
1 ユーザー、1 プロジェクト、1 分あたり 150

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

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

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

アルゴリズムの例

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

  1. Google Forms 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 ミリ秒以下の乱数です。これにより、多くのクライアントがなんらかの状況で同期され、一度に再試行され、同期された Wave でリクエストを送信するケースを回避できます。random_number_milliseconds の値は再試行リクエストのたびに再計算されます。
  • 通常、maximum_backoff は 32 秒または 64 秒です。適切な値はユースケースによって異なります。

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

再試行までの待機時間と再試行回数は、ユースケースとネットワーク条件によって異なります。

料金

Google フォーム API は、すべて追加料金なしでご利用いただけます。割り当てリクエストの上限を超えても、追加料金は発生せず、アカウントに対する請求も発生しません。

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

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

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

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