
スプレッドシートでデータ管理をしていると、このセルを変えた時に特定のセルにデータを入れたり変更したい時があります。
スプレッドシート関数で処理できる内容であれば関数を入れてしまってもいいのですが、関数が複雑になりすぎてしまったり、GAS特有の機能を使用したい(Google Driveにフォルダを作成など)時があったりとします。
そこで今回はGASにあるトリガーという機能について解説していきます。トリガーって何?トリガーって複数あるけど何が違うの?というところからコードだけで作成できてしまうシンプルトリガーなども解説していきます。
Contents
この記事の内容が役立つターゲット読者
- セルを入力した時に特定のプログラムを実行したい
- トリガーを設定してセルが編集されると起動されるプログラムを作成したい
- 関数ではなくプログラムコードで多岐にわたる処理をしたい
- コードだけでトリガーが作れるの?という方
- onEdit/onChangeって何?という方
- シンプルトリガー?インストラーブルトリガー?という方
今回のサンプル
今回はスプレッドシートに文字を入れるとメッセージが表示される機能を作成します。
まずはオーソドックスなトリガー設定の仕方について記載していきます。
トリガーの設定方法(インストラーブルトリガーの設定)
1:スプレッドシートを開き ツール→スクリプトエディタをクリックしコード入力画面を開きます
2:以下の赤部分をクリック
3:右下のトリガーを追加をクリック
4:途中 アカウントのリクエストを求めるポップアップが出てきますが、スプレッドシートなどと連携させるためですので許可をクリックしてください
以下でアカウントのリクエスト許可について詳しく解説しています。
無料アカウントでGoogleサービスへのスコープを設定する方法
5:同様にこのアプリは確認されていません。と警告表示が出てきてびっくりするかもしれませんが自分で作成しているプログラムなので気にせず許可していってください
6:トリガーの中身の設定を行います。今回はスプレッドシートのセルを編集した時に起動するプログラムを作りたいので
イベントのソース:スプレッドシートから
イベントの種類を選択:編集時
を設定して保存をクリックして設定は完了です。
メッセージを表示させるコードを作成
トリガーの設定は終わりましたのでコードを記入していきます。
//トリガーを設定するプログラム function myFunction() { Browser.msgBox('セルが編集されました。'); }
上記のコードをコピペし保存してください。
そしてスプレッドシートに戻りセルに文字を入れてみるとサンプルのようにメッセージが表示されると思います。これでセルを編集すると起動するプログラムが完成されました。
ちなみにこういったトリガー設定方法をインストラーブルトリガーと言います。トリガー設定方法には他にもシンプルトリガーというものがあるのでこれについて説明していきます。
トリガーの設定方法(シンプルトリガーの設定)
こちらの方法を使うとコードを書くだけで簡単に先ほどと同じプログラムを起動することが出来ます。先ほど書いたコードをコメントアウトか削除し以下をコピペし保存してみてください。
//シンプルトリガーを設定するプログラム function onEdit() { Browser.msgBox("セルがシンプルトリガーで編集されました。"); }
セルに文字を入れてみると「セルがシンプルトリガーで編集されました。」と出てきますね。このようにコードだけで簡単にトリガーが発動する方法をシンプルトリガーと言います。
じゃあこっちのシンプルトリガーだけでやった方が簡単でいいじゃないかと思ってしまいますが、実はこのシンプルトリガーには色々な制約があるのです。
そのあたりの解説については以下のリンクの「トリガーの種類について」について詳しく説明しているので参考にしてみてください。
【GAS】スマホやタブレットからスプレッドシートのスクリプトを実行する方法
なので今回は自分で作ったスプレッドシートに自分でコードを書いている。ということなので問題なくシンプルトリガーを使うことが出来ます。設定して上手く起動しないな?って思った際はこういった制約があるのだと理解していると修正しやすいかと思います。
onEdit(編集時)/onChange(変更時)の違い
シンプルトリガーには様々な機能(関数)があるのですがonEditと似たような機能にonChangeというものがあります。
*どうやらリファレンスを見てみるとシンプルトリガーで作成するonChange機能は無くなってしまったようです。ですが一応比較するために残しておきます。onChangeではなくインストラーブルトリガーを使用してください。
Simple Triggers(Google Apps Script)
onEdit(シンプルトリガー) = 編集時(インストラーブルトリガー)
onChange(シンプルトリガー) = 変更時(インストラーブルトリガー)
ではこの二つは何が違うのか。簡単にいうと
onEdit(編集時) = セルに何か文字が入った時、または空白になった時だけ発動
onChange(変更時) =スプレッドシートが変更された時
onChange(変更時)をもう少し細かく説明するとonEdit機能(編集時)+下の赤く囲った所が変更されると発動される機能をなります。
一見するとonChange(変更時)を使えば全て対応できてしまうと思ってしまうかもしれません。しかしながら文字の色を変えたり、文字の大きさ変えたりするだけで起動してしまいますので、監視プログラムのようなスクリプトが作成されてしまうので注意が必要です。
onSelectionChange()機能について
レファレンスをみるとこの機能が追加されていました。以下がトリガー起動条件です。
・セルの選択範囲が変更される毎
・シートを移動させる毎
onChangeのようにセルが編集されたり、行列の追加・削除が行われるたびに起動はされませんでした。またセル内に文字を入力したり消去しても起動はされませんでした。あくまでセルの選択範囲が変更される時のみ起動するトリガーですので注意が必要です。
シンプルトリガーの制約を回避するためのTips
基本的にはインストラーブルトリガーを使っておけばシンプルトリガーの制約は受けません。ただ設定が面倒だったりセルを入力したら特定の文字が設定される・警告が出るような簡単なトリガーを設定したい場合にはonEditと書くだけで設定できるのでとても便利です。
まとめ
今回の記事では、セルを編集する毎にプログラムを起動させるためのトリガー設定が作成できるようになりました。またトリガーの種類・各機能の違いについても説明しました。
この記事ではメッセージを表示させるだけのプログラムを紹介しましたが、この機能を応用することによって作業者のミスの低下や効率化を行うことが出来るかと思います。
ぜひこの機能を覚えていただき、セルが編集される際に実行ができる様々なプログラムを作成してみてください。
ここまでお読みいただきありがとうございました。