【日本語リファレンス】GASの日次割当と日次制限について

URLをコピーする
URLをコピーしました!

本記事ではGoogle Apps Script(以下、GAS)に関連する日次割当や制限について説明しようと思います。

GASは開発環境の構築などが必要なく、Googleアカウントさえあれば誰でもすぐに開発が行えるため、非常に便利で有用な言語です。しかしながら、手軽に使える反面、いろいろな制限があることをご存知でしょうか?

今回は、下記の公式ページの翻訳をベースにGASの制限や1日の割当について説明をしようと思います。

目次

Google Apps Scriptの一日の割当や制限とは

GASでは様々なことが自動化できるのですが、何でもかんでも処理を自動化し放題かと言われるとその答えはNoとなります。

例えば、GASではメールをプログラムによって送信することができますが、1日の送信回数に制限が設定されています。

これは、システムで送信をする場合、大量のメールを短時間で送ることができてしまうため、メールの大量送信などができてしまうとスパムメールの送信などに悪用しようとする人が出てきたりする可能性がありますので、制限が設けられているのだと思います。

ちなみに、GASの制限だけでなく、他のGoogle製品や連携するサードパーティアプリの中にはGASとは別に利用回数などの制限が設定されているものも存在します。

他のシステムとの連携システムの開発を進める際にはそのような制限についても確認するようにしましょう。

一日の割当や制限を超えてしまうとどうなるのか

一日の割当や制限を超えてしまうと、その時点でプログラムは自動的にエラーを吐き出すようになります。

使っているシステムが制限を超えてしまうとその後は期待通りに動作しなくなってしまいますので、GAS開発者としては制限を超えないシステム設計が必須になります。

一日の割当や制限超えを解消するためには

割当や制限を超えてしまった場合、解消するための方法は1つしかありません

その方法はズバリ時間が解決してくれます。

失恋から立ち直るみたいな方法ですが、日次の割当や制限ですので、次の日になれば自然と解決します。

ただし、Googleは海外企業ですので、何時に制限がリセットされるのかは長年GASを使った開発を行っている私でさえ未だにわかっていません

今までの経験上、日本時間の午前0時が1日の始まりではないとは思っていますが、詳しい検証など行っていませんので、何時が起点なのかはわかっていません。

わかる方いればぜひコメントで教えて下さい。

アカウントの種類によって割当や制限が異なる

GASの制限は、Googleアカウントの種類によって上限数が異なります。

以前までは、アカウントは3種類とEarly Accessというアカウント種別とは関係のない上限数が設定されるアカウントが1種類の合計4種類の制限が設定されていましたが、本記事執筆時点(2021年1月)ではGoogleの有料アカウント(Google Workspaceユーザー)と無料アカウント2種類の制限があることが公式ページで確認ができます。

割当や制限についての注意点

他のGoogleサービスと同じく、制限についてはGoogleの気分次第で通知なく内容が変更されることがあります。

今までは、大体の場合、制限が緩和される方向の改定が今までは多い印象ですが、場合によっては利用者に不利な方向に制限がかかる場合があります。

私の知る限りではメールの送信回数の制限とスクリプトの1回の処理時間については以前よりも制限が厳しくなりました。(すべての制限の変更を把握していませんので、他にも厳しく変更されたものはあるかもしれません)

中でもスクリプトの処理時間の上限変更については、少なくとも私には相当のインパクトがありました。

このような開発者にとってマイナスの変更が適用されると、今まで正常に動いていたシステムがある日突然エラーが出てしまう可能性があるので、日次割当や制限の内容については常に最新の内容を把握することが開発者としては不可欠であると思います。

GASの日次割当や制限については、常に最新状態を把握しよう

アカウント別の日次割当一覧表

執筆時点(2022年4月)の日次割当一覧

対象オペレーション無料アカウント(gmail.com)向け上限数Google Workspaceアカウント向け上限数
Googleカレンダー予定の作成5,000個10,000個
連絡先のコンタクト作成1,000件2,000件
Googleドキュメントファイルの作成250ファイル1,500ファイル
ファイルの変換2,000ファイル4,000ファイル
外部ドメインユーザーへのメール送信100アドレス1,500アドレス
同一ドメインユーザーへのメール送信100アドレス2,000アドレス
受信メールの読取り及び送信メールの下書きの作成20,000メール50,000メール
グループの読取り2,000回10,000回
JDBCへの接続10,000回50,000回
JDBCへの接続失敗100回500回
Googleスライドファイルの作成250ファイル1,500ファイル
スクリプトプロパティの読取りと書き込み50,000回500,000回
スプレッドシートファイルの作成250ファイル3,200ファイル
トリガー起動による起動合計時間90分6時間
URL Fetchコール回数20,000回100,000回
Googleマップの静的マップ生成1,000回10,000回
Googleマップのルート案内検索1,000回10,000回
Googleマップの座標情報によるコール1,000回10,000回
Google翻訳コール5,000回20,000回
Googleマップの高度検索1,000回10,000回
Apps Scriptプロジェクトの作成50回50回

Google Workspaceアカウントにおける注意点

新しく作られたGoogle Workspaceドメインの場合で、メールの送信先上限については、ユーザー数が5名以下の場合、最初の請求までの間は無料アカウントと同じ割当となります。6名以上のユーザーがいる場合や、初回の支払いが完了している場合はGoogle Workspaceの割当が適用されます。

アカウント別の制限一覧表

執筆時点(2022年4月)の制限一覧

対象のオペレーション無料アカウント(gmail.com)Google Workspaceアカウント
スクリプトの起動時間6分 / 実行6分 / 実行
スプレッドシートのカスタム関数の起動時間30秒 / 実行30秒 / 実行
スクリプトの同時実行数30個30個
メールへのファイル添付数250個 / メール250個 / メール
メール本文のサイズ200KB / メール400KB / メール
1メールの送信宛先上限数50人 / メール50人 / メール
1メールにおける合計添付ファイルサイズ25MB / メール25MB / メール
1つのスクリプトプロパティデータのサイズ9KB / 値9KB / 値
スクリプトプロパティの合計サイズ500KB / プロパティ500KB / プロパティ
トリガー数20個 / ユーザー / スクリプト20個 / ユーザー / スクリプト
URL Fetchのレスポンスサイズ50MB / コール50MB / コール
URL Fetchのヘッダー数100個 / コール100個 / コール
URL Fetchのヘッダーサイズ8KB / コール8KB / コール
URL FetchのPOSTデータサイズ50MB / コール50MB / コール
URL FetchのURL文字数2KB / コール2KB / コール

エラーメッセージ一覧

  • Limit exceeded: 制限を超えたオペレーション内容.

エラーメッセージ例)Limit exceeded: Email Attachments Per Message.

制限一覧表の上限値のいずれかを超えてしまった場合に表示されるエラーです。

  • Service invoked too many times: サービス名.

エラーメッセージ例)Service invoked too many times: Calendar.

1日の割当を超えて対象のサービスを呼び出そうとした場合に表示されるエラーです。

  • Service invoked too many times in a short time: サービス名. Try Utilities.sleep(1000) between calls.

エラーメッセージ例)Service invoked too many times in a short time: Calendar. Try Utilities.sleep(1000) between calls.

短時間の間に対象のサービスを何度も呼び出そうとした場合に表示されるエラーです。

間にスリープを挟むなどして意図的に呼び出し回数を減らすことでエラー回避できます。

  • Service using too much computer time for one day.

1日に処理を実行できる上限時間を超えた場合に表示されるエラーです。

主にトリガーで自動起動するシステムを構築している場合、無料アカウントでは90分、有料アカウントでは6時間の上限がありますので、その時間を超えるようなオペレーションがされた場合に表示されることになります。

手動での実行時間の上限は公式には明示されていませんが、公式文書を読む限り、手動実行した場合にもこのエラーが表示される可能性がありそうです。

このエラーメッセージが表示されたら時間を置いてから実行するしか解消方法はありません

  • Script invoked too many times per second for this Google user account.

短時間に大量の処理が実行された場合に表示されるエラーです。

特にスプレッドシートのカスタム関数をGASで開発した場合に1つのスプレッドシートから大量の処理が実行されてしまう場合に表示されることが多いようです。

エラーを回避する方法は、コードを開発する際に対象の範囲を限定するなどして何度も呼び出しがされないように工夫することが必要です。

  • There are too many scripts running simultaneously for this Google user account.

1つのアカウントから同時に30個を超える処理がされた場合に表示されるエラーです。

これは、1つのスクリプトでの実行数の合計数ではなく、ユーザー単位で実行されるスクリプト数の合計になります。

複数のスクリプトに対してトリガーなどで同じ時間に起動するように設定を行っていたりすると上限を超えてしまう可能性が出てきます。

スプレッドシートのカスタム関数やonEditなどで編集時に起動する処理が設定されている場合にもこのエラーが表示される可能性が高くなります。

まとめ

今回はGASにおける利用制限や日次の割当について内容をご紹介しました。GASで開発を行う場合は把握しておくべき内容ですので、頭の片隅に入れておきましょう。

また、Googleサービスの特性上、予告なく制限の内容が変更される可能性もありますので、上記エラーメッセージが表示された場合には公式ページにて制限内容等を確認する癖をつけておくことが必要だと思います。

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
URLをコピーする
URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

初心者でもわかるGoogle Apps Script活用のススメの管理人。
業務でラクをするという邪な目的のためにプログラムを独学で勉強し始め、初心者向けのGoogle Apps Scriptの使い方サイトを運営するに至る。
ラクをするためにはどんな苦労も厭わないという考えから、手っ取り早くスキルアップするためにCrowdWorksやLancersなどで仕事を受注し始め、過去にはTopClass PRO Crowd workerに認定された経験を持つ。
現在では、業務効率化システムの開発を行う会社の代表を務める。

コメント

コメント一覧 (2件)

コメントする

目次
トップへ
目次
閉じる