お世話になっております!新入社員の道守みちるです!
先日、先輩の画面を横から見ていたら、スプレッドシートが勝手に動いて、メールが勝手に飛んでいきました。魔法かと思って「それ何ですか」と聞いたら、「GAS(ガス)」と返ってきました。ガス。都市ガスの顔しかしていない三文字が、いきなりIT用語として登場したので、しばらく混乱していました。
調べてみると、追加費用なしで使えて、けっこう色々できるらしい。じゃあ自分もやってみよう、と思ったのですが、手を出す前にひとつ引っかかりました。
「無料で何でもできる」と言われるものほど、あとから「そんな制限あったの?」が出てくるのでは?
というわけで、入門書より先に、公式ドキュメントの「制限」のページを読んでみました。今回はその話です。コードの書き方は一行も出てきません。
この記事で扱うのは、だいたいこの3つです。📝
- そもそもGASって何なのか(できるだけ日本語で言い直します)
- 公式に明記されている「上限」。特に効いてきそうな4つ
- で、最初の一歩をどこに置けばいいのか
そもそもGASって、何なんですか?🤔
GASは Google Apps Script(グーグル・アップス・スクリプト)の略です。日本語で言い直すと、Googleのサービスたちに指示を出せる、Googleの中に置かれたプログラムの置き場、というイメージが近いと思います。
スプレッドシート、Gmail、カレンダー、フォーム、ドライブ。ふだん人間が手でやっている操作を、「こうなったらこれをやって」と書いておくと、代わりにやってくれます。
ここで大事なのは、自分のパソコンの中では動いていないということ。プログラムはGoogleのサーバー上で動きます。だからパソコンを閉じていても、夜中でも動く。これが便利さの正体であり、同時に、このあと書く「上限」が存在する理由でもあります。
【Point】GASは「自分の道具箱」ではなく、Googleの敷地を借りて動かしているもの。だから敷地のルールがあります。
つまずき①:1回の実行は、6分で打ち切られます
たぶん最初にぶつかるのがこれです。
公式ドキュメントには、スクリプトの実行時間は1回の実行につき6分と書かれています。個人向けのGoogleアカウント(gmail.comなど)でも、会社で使うGoogle Workspaceのアカウントでも、ここは同じ6分です。お金を払えば伸びる、という種類の制限ではないわけですね。
6分と聞くと長そうに感じますが、たとえば「1万行のスプレッドシートを1行ずつ読んで、条件で振り分けて、書き戻す」といった処理は、書き方によっては簡単に超えるそうです。そして超えると、止まります。
【最重要】ここで言う「止まる」は、「何もしなかった」ではありません。途中までやった状態で止まります。半分だけ書き換えられたシートが残る、ということが起こりえます。
なので最初に作るものは、「途中で止まっても被害が出ないもの」から選ぶのが安全だろう、というのが今のわたしの理解です。
つまずき②:メールを送れる数には、1日の上限があります
GASは、指定した宛先にメールを送れます。「フォームに回答が来たら担当者に通知する」みたいな使い方ですね。便利です。
ただ、ここにも上限があります。公式ドキュメントによれば、1日に送れるメールの宛先数は、個人向けアカウントで100件/日、Google Workspaceアカウントで1,500件/日。
つまり同じコードでも、動かすアカウントの種類で上限が10倍以上変わるということです。「自分の個人アカウントで試したときは動いたのに、本番では足りない」も、その逆も起こりえます。試す場所と動かす場所は、揃えておいたほうがよさそうです。
つまずき③:トリガーは「作った人」のアカウントで動きます
ここからは、少し運用寄りの話です。
決まった時刻に自動で動かす仕掛けを、GASでは「トリガー」と呼びます。目覚まし時計のようなものだと思ってください。
公式ドキュメントには、インストール可能なトリガーは常に作成者のアカウントで実行される、と明記されています。さらに、あるアカウントから、別のアカウントが作ったトリガーを見ることはできないとも書かれています。
これが何を意味するか。Aさんが「毎朝集計してメールを送る」トリガーを作ったとします。そのメールは、ずっとAさんのアカウントから送られ続けます。そしてその設定は、他の人の画面には出てきません。
つまり、Aさんが異動したり退職したりしたあとで、「毎朝届いていたあのメールが止まったんだけど、誰も設定を見つけられない」という状況が、構造として起こりうるわけです。
【Point】GASの自動化は、放っておくと人に紐づきます。誰のアカウントで何が動いているかを、紙でもスプレッドシートでもいいのでどこかに書き残しておく。これだけで後の誰かが救われます。
ついでに:時刻の指定は、思ったよりゆるいです
もうひとつ、知っておくと驚かずに済むこと。時間で動くトリガーの時刻は、公式ドキュメントによれば多少ランダム化されるそうです。「毎日9時」と設定すると、9時から10時のあいだのどこかが選ばれ、以降はそのタイミングが保たれる、という挙動が説明されています。
「9時00分ちょうどに届かないと困る」という業務には、そのままでは向かない、ということですね。
つまずき④:失敗しても、画面には何も出ません
これも公式に書かれています。トリガーが動いて関数が失敗しても、画面にエラーメッセージは表示されません。代わりに、Googleから「Summary of failures for Apps Script」という件名のメールが届きます。
裏を返すと、そのメールを見ていない人には、止まっていることが分からないということです。
自動化の本当に怖いところは、動かないことよりも、動いていないことに気づかないまま日数が過ぎることだと思っています。作るときに、失敗通知が誰に届くのかまで決めておきたいところです。
上限のまとめ(一部)
| 項目 | 個人向けアカウント | Google Workspace |
|---|---|---|
| 1回の実行時間 | 6分 | 6分 |
| カスタム関数の実行時間 | 30秒 | 30秒 |
| トリガーの合計実行時間 | 90分/日 | 6時間/日 |
| メール送信の宛先数 | 100件/日 | 1,500件/日 |
| スプレッドシートの新規作成 | 250件/日 | 3,200件/日 |
で、最初の一歩はどこに置けばいいの?
わたし自身まだ入口に立ったところなので、偉そうなことは書けません。ただ、ここまで読んだうえで自分ならこうする、という順番なら書けます。
- まず、GASを使わずに済まないか考える。フォームの回答をスプレッドシートに集めたいだけなら、そもそもコードは要りません(→ 【Googleフォーム】「メールで受けてExcelに写す」から卒業する)
- 作るなら、途中で止まっても困らないものから。読み取って別のシートに書くだけ、のような処理です
- 動かす前に、誰のアカウントで動かすかを決めて、書き残す。あとから調べるのは大変です
- 失敗通知の届く先を確認しておく。作った本人しか気づけない状態は避けたいところです
ちなみに、集計そのものを見直すだけで自動化が要らなくなることもあります。そのあたりは 【スプレッドシート】月次集計を、毎月作り直すのをやめる に書きました。
【結論】GASは、始めるのはとても簡単です。難しいのは、始めたあと、動き続けている状態を保つことのほうだと思います。
分からないことは、分からないと書いておきます
- 実際の業務で「6分」にどれくらいの頻度でぶつかるのか、わたしにはまだ体感がありません。試して分かったら、また書きます。
- 上限の数値は、公式自身が「予告なく変更されることがある」としています。この記事の数字も、読んでいただいている時点では変わっているかもしれません。作る前に公式ページで確認してください。
- GASとノーコードのツール、どちらを選ぶべきかは、正直まだ判断がつきません。
歯切れが悪くてすみません。ただ、制限を知らずに作り始めるより、知ってから始めるほうが、たぶん遠回りしないはずです。
参考にした資料
- Google「Quotas for Google Services」(Google Apps Script 公式ドキュメント)
https://developers.google.com/apps-script/guides/services/quotas - Google「インストール可能なトリガー」(Google Apps Script 公式ドキュメント)
https://developers.google.com/apps-script/guides/triggers/installable?hl=ja

