GASを「自動で動かす」ための仕組み
GASの大きな魅力のひとつが、「人が操作しなくても自動で処理を実行できる」点です。
この自動実行を支えているのが トリガー という仕組みです。
トリガーを使うと、決まった時間に処理を実行したり、スプレッドシートの編集をきっかけに処理を動かしたりできます。
日次集計、定期チェック、通知処理など、実務で使われる自動化の多くはトリガーが前提になります。
この記事では、トリガーの基本と設定手順に加えて、onEditイベントの実践コード(条件分岐あり)までを解説します。
「どの編集に反応させるか」を制御できるようになることがゴールです。
目次
トリガーとは何か
トリガーとは、「ある条件をきっかけに、指定した関数を自動実行する仕組み」です。
人が実行ボタンを押さなくても、GASが裏側で処理を動かします。
- 時間主導トリガー
- イベントトリガー(onEdit など)
時間主導トリガーの基本
時間主導トリガーは、決まった時間・間隔で処理を実行する仕組みです。
日次・週次処理のほとんどはこの方式で実現できます。
イベントトリガーの種類
イベントトリガーは、ユーザー操作をきっかけに実行されます。
中でも onEdit はスプレッドシート自動化の要になります。
- onEdit:セル編集時
- onOpen:ファイルを開いた時
- onFormSubmit:フォーム送信時
トリガーの設定手順(画面ベース)
onEdit は、関数名を onEdit にするだけで動作します。
時間主導トリガーは、エディタ左側の「トリガー」画面から設定します。
onEditイベントの基本コード
function onEdit(e) {
Logger.log('セルが編集されました');
}
この関数は手動実行できません。
実際にセルを編集したときにのみ動作します。
onEdit+条件分岐の実践サンプル
実務では「どこが編集されたか」を判定して処理を分けるのが基本です。
以下は、特定のシート+特定の列だけに反応する例です。
function onEdit(e) {
const sheet = e.range.getSheet();
const sheetName = sheet.getName();
const column = e.range.getColumn();
// 対象:Sheet1 の B列のみ
if (sheetName === 'Sheet1' && column === 2) {
const value = e.range.getValue();
Logger.log('B列が編集されました:' + value);
}
}
このように条件を絞ることで、不要な処理を防げます。
onEdit は頻繁に呼ばれるため、条件分岐は必須だと考えてください。
次は、入力内容によって処理を分ける例です。
function onEdit(e) {
const value = e.range.getValue();
if (value === 'OK') {
Logger.log('OKが入力されました');
} else if (value === 'NG') {
Logger.log('NGが入力されました');
}
}
このパターンは、ステータス管理やチェック欄でよく使われます。
通知処理と組み合わせると、実務で非常に強力です。
onEditでよくある注意点
- 処理は必ず軽くする
- セル書き換え時の無限ループに注意
- 対象シート・列・値を必ず限定する
onEdit は便利ですが、乱用するとスプレッドシートの動作が重くなります。
「条件で絞る」ことが最大のコツです。
まとめ
この記事では、GASのトリガーの基本から、onEditイベントの条件分岐を含む実践例までを解説しました。
ここまで理解できれば、スプレッドシート自動化の土台は完成です。
次回は、onEditや時間トリガーと組み合わせて使われる「通知処理」を扱います。
0 件のコメント:
コメントを投稿