使用制限

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

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

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

リクエストの上限について詳しくは、次の表をご覧ください。

割り当て
読み取りリクエスト
1 プロジェクト、1 日あたり 無制限
プロジェクトあたり毎分 975
プロジェクトごとのユーザー 1 人あたりの 1 分あたり 390
費用のかかる読み取りリクエスト

forms.responses.list リクエストに使用されます)。

1 プロジェクト、1 日あたり 無制限
プロジェクトあたり毎分 450
プロジェクトごとのユーザー 1 人あたりの 1 分あたり 180
書き込みリクエスト
1 プロジェクト、1 日あたり 無制限
プロジェクトあたり毎分 375
ユーザーごとに 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 ミリ秒以下の乱数です。これにより、なんらかの状況によって多数のクライアントが同期され、再試行が一度に実行されて、リクエストが同時に次々と送信されるような状況を避けることができます。random_number_milliseconds の値は再試行リクエストの後に毎回再計算されます。
  • 通常、maximum_backoff は 32 秒または 64 秒です。適切な値はユースケースによって異なります。

クライアントは、maximum_backoff 時間が経過した後も再試行を続けることができます。この時点より後の再試行では、バックオフ時間を増加させ続ける必要はありません。たとえば、クライアントで 64 秒の maximum_backoff 時間が使用されている場合、この値に達した後は、クライアントは 64 秒ごとに再試行を繰り返します。無限に再試行することは、クライアントが、どこかの時点で止める必要があります。

適切な再試行間の待ち時間と再試行回数は、ユースケースとネットワークの状態により異なります。

料金

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

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

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

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

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