onEditトリガーの作成方法
スプレッドシートでデータ管理をしていると、このセルを編集した時に特定のセルにデータを入れたり変更したい時があります。
スプレッドシートの関数で処理できる内容であれば関数を入れてしまってもいいのですが、関数が複雑になりすぎてしまったり、GAS特有の機能を使用したい(Google Driveに新規フォルダを作成することやメールの送信など)時にはGASを使わざるを得ない状況もあります。
そこで今回はGASにあるトリガーという機能について解説していきます。
- トリガーって何?
- トリガーって複数あるけど何が違うの?
- シンプルトリガーとインストーラブルってなに?
このような疑問にお答えしていきます。
この記事の内容が役立つターゲット読者
- セルを入力した時に特定のプログラムを実行したい
- トリガーを設定してセルが編集されると起動されるプログラムを作成したい
- 関数ではなくプログラムコードで多岐にわたる処理をしたい
- コードだけでトリガーが作れるの?という方
- onEdit/onSelectionChangeって何?という方
- シンプルトリガー?インストラーブルトリガー?よくわからない!という方
今回のサンプル
今回はスプレッドシートに文字を入れるとメッセージが表示される機能を作成します。
まずはオーソドックスなトリガー設定の仕方について記載していきます。
トリガーの設定方法(インストラーブルトリガーの設定)
スプレッドシートを開き ツール→スクリプトエディタをクリックしコード入力画面を開きます
以下の赤部分をクリック
右下のトリガーを追加をクリック
初めてトリガーを設定する際はアカウントのリクエストを求めるポップアップが出てきます。
下記の記事を参考に権限を付与してください。
トリガーの設定を行います。
今回はスプレッドシートのセルを編集した時に起動するプログラムを作りたいので
イベントのソース:スプレッドシートから
イベントの種類を選択:編集時
を設定して保存をクリックして設定は完了です。
ダイアログメッセージを表示させるサンプルコードを作成
トリガーの設定は終わりましたのでコードを記入していきます。
//トリガーを設定するプログラム
function myFunction() {
Browser.msgBox('セルが編集されました。');
}
上記のコードをコピペしファイルを保存してください。
そしてスクリプトエディタを閉じてからどこのセルでもいいので文字を入力してください。
サンプルコードのように『セルが編集されました。』とメッセージが表示されればセルを編集すると起動するプログラムの完成です。
ちなみにこのように自分で設定するタイプのトリガーをインストラーブルトリガー(Installable Triggers)と言います。トリガー設定方法には他にもシンプルトリガーというものがあるのでこれについて説明していきます。
トリガーの設定方法(シンプルトリガーの設定)
こちらの方法を使うとコードを書くだけで簡単に先ほどと同じプログラムを起動することが出来ます。
先ほど設定したトリガーを削除してから、下記のコードを貼り付けてスクリプトを上書き保存してください。
//シンプルトリガーを設定するプログラム
function onEdit() {
Browser.msgBox("セルがシンプルトリガーで編集されました。");
}
セルに文字を入れてみると『セルがシンプルトリガーで編集されました。』と出てきますね。
このように自分でトリガー設定の必要がない関数をシンプルトリガー(Simple Triggers)と言います。
じゃあこっちのシンプルトリガーだけでやった方が簡単でいいじゃないかと思ってしまいますが、実はこのシンプルトリガーには色々な制約があるのです。
そのあたりの解説については下記の記事で詳しく解説しています。
onSelectionChange()機能について
onEditトリガーの他に、onSelectionChangeというシンプルトリガーもあります。
このトリガーは比較的新しいトリガーで、トリガーの発動条件は次の2つのパターンです。
- セルの選択範囲が変更される毎
- シートを移動させる毎
onEditとは異なり、セルの編集時や行列の追加・削除が行われるたびに起動はされません。
セルの選択範囲が変更される時のみ起動するトリガーです。
シンプルトリガーの制約を回避するためのTips
シンプルトリガーの制約を回避するためには、インストーラブルトリガーを使いましょう。
スプレッドシートなどのファイルとバンドルされたコードでなければonEditなどが使えないと認識している方もいますが、外部ファイルとすることもできますので、シンプルトリガーでできてインストーラブルトリガーでできないことはほとんどないと思います。
※カスタム関数の開発はバンドルプログラムじゃないとできないですが。
まとめ
今回の記事では、セルを編集する毎にプログラムを起動させるためのトリガー設定が作成できるようになりました。またトリガーの種類・各機能の違いについても説明しました。
この記事ではメッセージを表示させるだけのプログラムを紹介しましたが、この機能を応用することによって作業者のミスの低下や効率化を行うことが出来るかと思います。
ぜひこの機能を覚えていただき、セルが編集される際に実行ができる様々なプログラムを作成してみてください。
ここまでお読みいただきありがとうございました。