森田 嶺

知らないと損!GASのトリガーを徹底解説(基本編)

知らないと損!GASのトリガーを徹底解説(基本編)サムネイル画像

Google Apps Script(以下GAS)は、Gmail、スプレッドシート、ドキュメントといったGoogleの各種サービスを、プログラミングによって自動化し、連携させるためのノーコード・プラットフォームです。日々の業務でGoogleサービスを活用している方にとって、GASを使いこなすことは、作業効率を飛躍的に向上させる可能性を秘めています。  

その中でも特に重要な機能が「トリガー」です。トリガーとは、特定の出来事(たとえば、スプレッドシートが編集された、フォームが送信されたなど)が発生したタイミングや、あらかじめ指定した時刻に、作成したGASのスクリプト(関数)を自動的に実行させる仕組みを指します。このトリガー機能を理解し、活用できるかどうかで、日々の定型業務にかかる時間や手間は劇的に変わります。まさに「知らないと損」な機能と言えるでしょう。  

この記事では、GASのトリガーについて、その基本的な概念から具体的な種類、設定方法、さらには実用的な活用例や注意すべき点、そして問題が発生した際の解決策について解説します。

※本記事は、「基本編」と「応用編」で構成されます。「応用編」では、トリガーの具体的な設定方法やトラブルシューティングの方法などについて解説します。
応用編はこちら:知らないと損!GASのトリガーを徹底解説(応用編)

GASのトリガーとは何か

GASのトリガーとは、特定の「きっかけ」に応じて、事前に定義されたスクリプト(関数)を自動で実行する機能です。この「きっかけ」には、スプレッドシートのファイルが開かれた時、特定のセルが編集された時、Googleフォームから新しい回答が送信された時といった「イベントの発生」や、「毎朝9時」「毎週月曜日の午前10時」といった「特定の時刻」があります。

これまで手作業で一つ一つ行っていた定型的な業務や、忘れがちなタスク処理などを、トリガーを使って自動化することで、作業時間を大幅に短縮し、日々の業務負担を大きく軽減できます。たとえば、毎日のデータ集計、定期的なレポート作成、条件に応じたメール通知など、幅広い範囲で活用できます。

トリガーには2つの種類がある

GASで利用できるトリガーは、大きく分けて「シンプルトリガー」と「インストール型トリガー」の2種類が存在します。次章では、2つのトリガーの詳細について説明します。

シンプルトリガーは定義するだけで使えるトリガー

onOpen() onEdit() といった特定の予約された関数名をスクリプト内で定義するだけで利用できる、手軽なトリガーです。設定が簡単な反面、利用できる機能にはいくつかの制限があります。たとえば、Gmailの送信など、ユーザーの承認が必要なサービスへのアクセスはできません。具体的には以下のようなトリガーが存在します。

トリガー関数 説明
onOpen(e) ユーザーが編集権限を持つスプレッドシート、ドキュメント、プレゼンテーション、フォームを開いたときに実行される。
onInstall(e) ユーザーがGoogleドキュメント、スプレッドシート、スライド、フォーム内からエディタ アドオンをインストールしたときに実行される。
onEdit(e) ユーザーがスプレッドシートの値を変更したときに実行される。
onSelectionChange(e) ユーザーがスプレッドシート内の選択内容を変更したときに実行される。
doGet(e) ユーザーがウェブアプリにアクセスしたとき、またはプログラムがウェブアプリにHTTP GETリクエストを送信したときに実行される。
doPost(e) プログラムがHTTP POSTリクエストをウェブアプリに送信したときに実行される。

イベントオブジェクトを活用する

前述したトリガー関数は引数に「e」という値を持っています。これはイベントオブジェクトと呼ばれるもので、トリガー対象のファイルの情報など、次のアクションに繋げるための情報が格納されています。

たとえば、onEdit(e)が受け取るイベントオブジェクトeには、編集操作に関する詳細な情報が詰まっています。たとえば、どのスプレッドシートのどのセルが編集されたのか、編集後の値は何になったのか、編集前の値は何だったのか、といった情報を取得できます。これらの情報を利用することで、単に「編集された」という事実だけでなく、「どのように編集されたか」に応じて処理を分岐させることができ、非常にきめ細やかな自動化を実現できます。

以下は、スプレッドシートを操作する場合のイベントオブジェクトでよく利用される主要なプロパティです。

プロパティ

説明

使用例(コード内で)

e.source

イベントが発生したスプレッドシートオブジェクトを取得します。

var ss = e.source.getActiveSheet();

e.range

編集されたセルまたはセル範囲のRangeオブジェクトを取得します。

var cell = e.range;

e.value

編集されたセルに入力された新しい値を取得します(単一セルの場合)。

var newValue = e.value;

e.oldValue

編集される前のセルの値を取得します(単一セルの場合)。

var oldValue = e.oldValue;

e.range.getRow()

編集された範囲の開始行番号を取得します。

var row = e.range.getRow();

e.range.getColumn()

編集された範囲の開始列番号を取得します。

var col = e.range.getColumn();

e.source.getSheetName()

編集されたシートの名前を取得します。

var sheetName = e.source.getSheetName();

e.user

スクリプトを実行したユーザーに関する情報を取得します(メールアドレスなど)。

var userEmail = e.user.getEmail(); (制限あり)

一方でシンプルトリガーには多くの制約が存在する

手軽に利用できるシンプルトリガーですが、いくつかの重要な制限事項があります。これらを理解しておかないと、スクリプトが期待通りに動作せず、原因究明に時間を浪費してしまう可能性があります。

制約

説明

承認が必要なサービスの利用不可

GmailAppを使ったメール送信や、UrlFetchApp を使った外部APIとの連携など、実行にユーザーの承認を必要とするサービスは利用できません。

実行時間の制限

1回の実行につき最大30秒という短い時間制限があります。これを超えるような長時間の処理は実行できません。

アクセス可能なファイルの制限

スクリプトがバインド(紐付け)されているファイル(たとえば、onEditであればそのスプレッドシート自体)しか変更できません。

読み取り専用モードでの非実行

ファイルが読み取り専用モード(閲覧モードやコメントモード)で開かれている場合、シンプルトリガーは実行されません。

スクリプトによる操作では発動しない

他のGASスクリプトからのAPI呼び出し(例:Range.setValue()メソッドでセルの値を変更する)では、onEditのようなシンプルトリガーは実行されません。トリガーはあくまでユーザーの手動操作によって発動します。

エラー通知の欠如

スクリプトの実行中にエラーが発生しても、その通知は自動的には行われません。問題の発見が遅れる可能性があります。

これらの制限は、シンプルトリガーがユーザーに明示的な承認を求めることなく自動的に実行されるための安全措置として設けられています。より高度な機能や外部連携が必要な場合は、次に説明するインストール型トリガーの利用を検討する必要があります。

インストール型トリガーはより柔軟な設定が可能なトリガー

インストール可能なトリガーは、スクリプトエディタのGUI(グラフィカル・ユーザー・インターフェース)を通じて手動で設定するか、あるいはスクリプトコードによってプログラム的に作成する必要があります。シンプルトリガーよりも設定に一手間かかりますが、承認が必要なサービスを利用できたり、時間主導型の定期実行を設定できたりと、より高度で柔軟な自動化が可能です。  

インストール型トリガーを利用するメリット

インストール可能なトリガーは、より高度で柔軟な自動化を実現するためのトリガーです。その最大の魅力は、シンプルトリガーでは不可能だった多くの機能を利用できる点にあります。  具体的には、以下のようなメリットがあります。

メリット

説明

承認が必要なサービスの利用

Gmailの送信、Googleカレンダーへの予定登録、外部APIとの連携など、ユーザーの承認を必要とするサービスをトリガーから呼び出すことができます。

時間駆動型トリガー

「毎日午前8時に実行」「1時間ごとに実行」といった、特定の時間や間隔でスクリプトを定期実行できます。

プログラムによるトリガーの制御

スクリプトコードを使って、トリガーを動的に作成、変更、削除することが可能です。

豊富なイベントタイプへの対応

スプレッドシートの構造変更(シートの追加や削除など)やカレンダーの予定更新など、シンプルトリガーよりも多くの種類のイベントをトリガーとして設定できます。

これらの機能により、定型業務の自動化はもちろん、より複雑なワークフローの構築や、外部システムとの連携など、GASの活用範囲が格段に広がります。

インストール型トリガーはさらに2つの種類に分類できる

トリガーには2つの種類があり、現在はインストール型トリガーについて説明していますが、このインストール型についても「時間ドリブン」「イベントドリブン」という2つの種類に分類することができます。

時間駆動型トリガーは定期実行のためのトリガー

時間駆動型トリガーは、特定の日時や、あらかじめ設定した一定の間隔(例:毎分、1時間ごと、毎日、毎週、毎月など)でスクリプトを自動的に実行する機能です 。これは、Unix系システムにおけるcronジョブと同様の役割を果たします。

手動で設定する場合、イベントのソースとして「時間主導型」を選択し、さらにトリガーのタイプ(特定の日時、分ベースのタイマー、時間ベースのタイマー、日付ベースのタイマー、週ベースのタイマー、月ベースのタイマー)と、具体的な実行時刻や間隔を指定します。具体的な活用例は以下の通りです。

ユースケース

説明

毎朝のタスクリマインダー

その日の重要なタスクや予定をまとめたメールを毎朝決まった時間に自動送信する。

定期的なレポート作成・配信

週次や月次の売上データを自動集計し、関係者にメールやチャットでレポートを送信する。

外部APIからのデータ定期取得・更新

天気情報や株価情報など、外部APIから定期的にデータを取得し、スプレッドシートを最新の状態に保つ。

データのバックアップや整理

特定のフォルダ内のファイルを定期的にバックアップしたり、一定期間以上経過した古いデータを自動的にアーカイブまたは削除したりする 。

長時間を要する処理の分割実行

GASの1回の実行時間制限(通常6分)を超えるような重い処理を、時間駆動型トリガーを使って複数回に分割し、少しずつ実行させる。

時間駆動型トリガーは、人間の介入なしにバックグラウンドで定期的なタスクを確実に実行してくれるため、まるで「忠実な執事」や「定期巡回ロボット」を雇ったかのように業務を自動化できます。

これにより、人間が忘れがちな定型業務や、特定のタイミングで必ず実行しなければならない処理を、ミスなく確実に遂行させることが可能になります。これは、GASを単なるユーザー操作への応答ツールとしてだけでなく、能動的に動作する自動化エンジンへと昇華させる重要な機能です。

イベント駆動型トリガーは特定の処理を起点に起動するトリガー

イベント駆動型トリガーは、ユーザーによる操作やシステム上の特定の出来事(イベント)をきっかけとしてスクリプトを実行するタイプのトリガーです 。これにより、リアルタイム性の高い自動化処理を実現できます。  この説明だけだと、シンプルトリガーと同じ機能に見えるかもしれないですが、以下のような違いがあります。

比較項目

シンプルトリガー

インストール型トリガー(イベント駆動型トリガー)

設定

自動(関数名のみ)

手動(コードまたはUI)

権限(OAuth)

なし

必要(事前に許可)

利用可能API

制限あり

フルアクセス可能

イベント詳細

限定的

詳細なイベントデータあり

代表的な用途

軽量なUI操作やWebアプリの応答

複雑な処理、メール送信、ファイル操作など

インストール型トリガーの制約

インストール型トリガーはシンプルトリガーと比較すれば、制約は少ないですが、それでもいくつかの制限事項や注意点が存在します。これらを事前に理解しておかないと、スクリプトが期待通りに動作しなかったり、予期せぬ問題が発生したりする可能性があります。

制約

説明

1回の実行時間

インストール可能なトリガーによって実行されるスクリプトは、通常、1回の実行につき最大6分間の制限があります。シンプルトリガーの場合はさらに短く、最大30秒です。

トリガーの数

1人のユーザーが1つのスクリプトプロジェクトに対して設定できるインストール可能なトリガーの数には上限があり、通常は20個です。

1日の総実行時間

トリガーによって実行されたスクリプトの合計実行時間にも1日あたりの上限があります。無料の一般ユーザーアカウント(例:gmail.com)の場合は90分/日、有料のGoogle Workspaceアカウントの場合は6時間/日です。

これらのクォータは、GASがGoogleの共有リソース上で動作しているために設けられているものであり、無限にリソースを利用できるわけではないことを示しています。特に、処理に時間のかかるスクリプトを頻繁に実行するようなトリガーを設定している場合、これらの上限に達してしまい、トリガーが予告なく停止する可能性があります。  

2つのトリガーの違いを整理

ここまでの説明を踏まえた上で、シンプルトリガーとインストール型トリガーの主な違いを以下に整理しました。実行時間など、それぞれ制約が異なるため、要件に応じて、どちらかのトリガーを選択すると良いでしょう。

特徴

シンプルトリガー

インストール可能なトリガー

設定方法

特定の関数名を定義

GUIまたはプログラムで作成

承認が必要なサービス利用

不可  

可能  

実行時間制限(1回あたり)

通常30秒  

通常6分  

利用可能なイベントの種類

限定的(onOpen, onEditなど)

豊富(時間主導、フォーム送信、カレンダー更新など)  

プログラムによる制御

不可

可能  

他ファイルへのアクセス

バインドされたファイルのみ  

承認があれば可能

読み取り専用モードでの実行

不可  

不可  

スクリプトによるAPIでの発動

不可  

不可  

まとめ

Google Apps Scriptのトリガーは、日々のルーチンワークや定型業務を自動化し、業務効率を劇的に向上させるための強力な武器です。スプレッドシートの編集、フォームの送信、カレンダーの更新、あるいは単に時間が来たということを「きっかけ」として、面倒な作業をGASに任せることができます。

トリガーを使いこなすことで、貴重な時間を繰り返し作業から解放し、ヒューマンエラーを減らし、より創造的で付加価値の高い業務に集中できるようになります。まさに「知らないと損」だったトリガーの知識を身につけた今、日々の業務に潜む自動化のチャンスを見つけ出し、積極的に活用していくことで、これからの働き方に大きなアドバンテージを得られるはずです。

この記事では、GASトリガーの基本的な概念から種類、活用例、注意点について解説しました。次回は、具体的な設定方法やトラブルシューティングの方法について解説します。

応用編はこちら:知らないと損!GASのトリガーを徹底解説(応用編)

※Google CloudおよびGoogle Cloudの製品・サービス名称はGoogle LLCの商標です。

森田 嶺
森田 嶺
大学卒業後、 AWS や Google Cloud 等、主にクラウドを基盤とした新規サービス開発の経験を経て、YOSHIDUMIに入社。Google ドライブ拡張サービス「Cmosy」「共有ドライブマネージャー」等、 Google Cloud を活用した自社サービスの開発に従事。現在、 Google 等が提供する生成AIを活用したサービスを開発中。
AIとセキュリティでビジネスを次のステージへ! StarterからEnterpriseまで最適なアップグレード戦略セミナー

14:00-15:00 オンライン

AIとセキュリティでビジネスを次のステージへ! StarterからEnterpriseまで最適なアップグレード戦略セミナー

詳細はこちら

ぶっちゃけどうなの? 経験者が語るグループウェア移行の落とし穴セミナー

13:00-14:00 オンライン

ぶっちゃけどうなの? 経験者が語るグループウェア移行の落とし穴セミナー

詳細はこちら

データはすべてドライブへ!Google ドライブ運用まるわかりセミナー

14:00-15:00 オンライン

データはすべてドライブへ!Google ドライブ運用まるわかりセミナー

詳細はこちら

Google Workspace ユーザー必見! AppSheet & Google Apps Script 連携で実現する業務改善セミナー

14:00-15:00 オンライン

Google Workspace ユーザー必見! AppSheet & Google Apps Script 連携で実現する業務改善セミナー

詳細はこちら

オンラインセミナー開催中

お申込みはこちらをCheck!

関連する他の記事をよむ