2026年7月2日木曜日

GASのトリガーとは?時間指定・イベント実行の基本と使い分け

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や時間トリガーと組み合わせて使われる「通知処理」を扱います。

GAS onEdit 条件分岐 実践コード 解説イメージ

0 件のコメント:

コメントを投稿