GASにおける各種制限のまとめ

# はじめに
この記事は「[Ateam LifeDesign Advent Calendar 2023](https://qiita.com/advent-calendar/2023/ateam-life-design)」で完走賞を狙って25記事書いているうちの11日目の記事です。今年も完走目指して頑張るぞ！

今日はGASの各種制限についてまとめていきます。
なおこの情報は2023/12/9現在のものになります。

# GASの制限について
ここまでGASを使った各種操作についてまとめてきましたが、GASは無料で使える反面色々な制限があります。無料アカウント以外にも有料でGoogle Workspace アカウントも存在しますが一部制限は緩和されるもののどちらも一定の制限は存在します。

この記事ではそれらの制限についてまとめていきたいと思います。なお最新情報についてはこちらの[公式サイト](https://developers.google.com/apps-script/guides/services/quotas?hl=ja#current_limitations)を確認するようにしてください。

# GASの制限概要
GASの制限事項については大きく分けて以下の4つが存在します。

1. 実行時間制限
2. 実行回数制限
3. トリガーの制限
4. サービスごとの制限

それぞれについて詳しく見ていきましょう。

# GASの実行時間制限
実行時間に関する制限は以下の2つがあります。
   - **最大実行時間**: 1つの実行で最大6分間の実行が許可されます。
   - **1日の実行時間**: 24時間での合計実行時間に制限があります。

## 最大実行時間
おそらく一番引っかかりやすい制限がこの実行時間によるものかと思います。一般ユーザー向け（gmail.com など）およびG Suite 無料版でもGoogle Workspaceアカウントでもどちらでも1つのスクリプトの実行時間は6分という制限があります。処理するスプレッドシートが大きなものだと意外とすぐに制限に達してしまうので処理を工夫して実行時間を短縮できるようにしましょう。

| 機能                         | 無料アカウント| Google Workspace アカウント |
|------------------------------|------------------------------------------------------------|-|
| スクリプト ランタイム         | 6 分 / 実行              | 6 分 / 実行  |
|カスタム関数ランタイム	|30 秒 / 実行	|30 秒 / 実行	|

## 1日の実行時間
1日の合計実行時間に関しては無料アカウントとGoogle Workspace アカウントでそれぞれ以下のように制限がわかれます。無料版の場合は合計実行時間が90分までと意外と短いため注意が必要です。

| 機能                         | 無料アカウント| Google Workspace アカウント |
|------------------------------|------------------------------------------------------------|-|
| トリガーの合計実行時間	        | 90 分 / 日	           | 6 時間 / 日  |

# GASの実行回数制限
GASにはそれぞれの処理について実行回数の制限もあります。
| 機能                         | 無料アカウント| Google Workspace アカウント |
|------------------------------|------------------------------------------------------------|-|
| カレンダーの予定の作成	|5,000 / 日	|10,000 人 / 日|
|連絡先の作成	|1,000 人 / 日|	2,000 人 / 日|
|グループの読み取り|	2,000 人 / 日|	10,000 人 / 日|
|JDBC 接続	|10,000 人 / 日	|50,000 / 日|
|JDBC 接続の失敗	|100 人 / 日|	500 / 日|
|プレゼンテーションの作成	|250 / 日	|1,500 / 日|
|プロパティの読み取り/書き込み	|50,000 / 日	|500,000 / 日|
|スプレッドシートの作成|	250 / 日	|3,200 / 日|
|URL 取得の呼び出し	|20,000 / 日|	100,000 人 / 日|

# GASのトリガーの制限
GASは特定の日時や定期実行などを行うための仕組みとしてトリガーと呼ばれる機能が用意されていますが、トリガーについては実行件数と合計実行時間それぞれで制限があります。実行件数については1スクリプトにつき1ユーザーが20トリガーまでという意味になるので、ユーザーやスクリプトが別のものであれば、トリガーの制限数もリセットされます。

| 機能                         | 無料アカウント| Google Workspace アカウント |
|------------------------------|------------------------------------------------------------|-|
|トリガーの合計実行時間|	90 分 / 日	|6 時間 / 日|
|トリガー	|1 ユーザー / スクリプトあたり 20 件	|1 ユーザー / スクリプトあたり 20 件|


# GASの各種サービスごとの制限
各種サービスごとにもそれぞれ制限があります。特に制限が多いものについてピックアップして見ていきましょう。
   - **Gmail Service**: 送信可能なメール数や添付ファイルのサイズに制限があります。
   - **Map Service**: Mapのクエリの実行回数に制限があります。
 
## Gmail Service
Gmail Serviceでは送受信可能なメール数や添付ファイルのサイズに制限があり、それぞれ以下の通りとなっています。

| 機能                         | 無料アカウント| Google Workspace アカウント |
|------------------------------|------------------------------------------------------------|-|
|1 日あたりのメール受信者	|100 / 日	|1,500 / 日|
|ドメイン内の 1 日あたりのメール受信者	|100 / 日|	2,000 人 / 日|
|メールの読み取り/書き込み（送信を除く）	|20,000 / 日	|50,000 / 日|
|メール添付ファイル	|250 個 / 通	|250 個 / 通|
|メール本文のサイズ	|200 KB / メッセージ	|400 KB / メッセージ|
|メールあたりのメール受信者数|	50 / 通	|50 / 通|
|メールの添付ファイルの総サイズ	|25 MB / メッセージ	|25 MB / メッセージ|

## Map Service
Map ServiceではMapのクエリの実行回数に制限があり、それぞれ以下の通りとなっています。
| 機能                         | 無料アカウント| Google Workspace アカウント |
|------------------------------|------------------------------------------------------------|-|
|静的マップのレンダリング	|1,000 人 / 日	|10,000 人 / 日|
|Google マップの方向のクエリ	|1,000 人 / 日	|10,000 人 / 日|
|Google マップのジオコードの呼び出し	|1,000 人 / 日	|10,000 人 / 日|
|Google マップの高度サンプルのクエリ	|1,000 人 / 日	|10,000 人 / 日|


# 最後に
今日はGASの各種制限についてまとめました。あまり頻繁には遭遇しないものの、活用をすればするほど制限に引っかかる可能性は高まるのでこれらの制限があることは実装段階から意識できると良いと思います。GASが何故かエラーで動いたり動かなかったりする場合は、これらの制限を疑ってみてください！