G-gen の kiharu です。当記事では、Google Apps Script のトリガーイベント 「編集」と「変更」の違いについて解説します。
はじめに
Google Apps Scriptとは
Google Apps Script(以下、GAS) は、Google のサービス(Google スプレッドシート、ドキュメント、スライドなど)を自動化、拡張できるクラウドベースのプラットフォームです。
JavaScript ベースで、Google アプリケーションと連携したカスタム機能を簡単に作成できます。
- 参考 : Apps Script
GAS のトリガー
トリガーとは、GAS のスクリプトが実行される契機となる設定です。トリガーを設定することで、Google スプレッドシートの値が変更されたときや、特定の時刻になったときなど、指定したイベントを契機として自動的にスクリプトが実行されます。
GAS のトリガーには大きく分けて以下の2種類あります。
- シンプルなトリガー
- インストール可能なトリガー
どちらも特定のイベントに基づいてスクリプトを自動実行しますが、以下のように使い方と特徴が異なります。
シンプルなトリガー | インストール可能なトリガー | |
---|---|---|
使い方 |
用途に応じた関数名のいずれかを 使用して関数を作成する (onOpen、onEdit など) |
ユーザーが明示的に設定画面から 設定する |
特徴 | スプレッドシート等を操作しているユーザーのアカウントで実行される | 常にトリガー設定時に認証したユーザーのアカウントで実行される |
インストール可能なトリガーでは、新規トリガーを設定する際の最初の1回だけ、認証が求められます。トリガーが起動すると、設定時に認証したユーザーのアカウントの認証情報でスクリプトが実行されます。
- 参考 : シンプルなトリガー
- 参考 : インストール可能なトリガー
検知できるイベントタイプ
「シンプルなトリガー」と「インストール可能なトリガー」では、検知できるイベントが異なります。
例えば、スプレッドシートでの「変更」イベントはシンプルなトリガーでは検知できず、インストール可能なトリガーで定義する必要があります。当記事では、その中でも「編集」と「変更」の違いについて解説します。
- 参考 : 使用可能なトリガーの種類
「編集」と「変更」の違い
「編集」と「変更」、この2つの言葉だけをみて具体的に使い分けるのは難しいと思います。以下に違いをまとめました。
編集 | 変更 | |
---|---|---|
検知する操作 | スプレッドシートの "値" を変更したとき | スプレッドシートの "構成" を変更したとき |
ユーザーのアクセス | 要 | 不要 |
取得できる情報 |
* 認証モード * トリガーが検知されたファイル * 検知したトリガーID * どのユーザー権限で実行されたか * 編集前のセル値 * 編集後のセルの値 * 編集されたセルまたは範囲 |
* 認証モード * トリガーが検知されたファイル * 検知したトリガーID * どのユーザー権限で実行されたか * 変更の種類(行追加、値の変更など) |
- 参考 : イベント オブジェクト
検知する操作
「編集」イベントは、セルの値が変更されたときのみ検知されます。
一方で「変更」イベントは、スプレッドシートの様々な構成の変更(セルの値の変更に加え、行の追加、文字色の変更 など)がされたときに検知します。
ユーザーのアクセス
「編集」イベントは、ユーザーがスプレッドシートにアクセスしているときにのみ検知されます。逆に、システムによる変更では検知されません。
「変更」イベントは、ユーザーのアクセスは必須ではありません。ユーザーによる変更と、システムによる変更のどちらも検知されます。
取得できる情報
「編集」イベントではセルの値の変更情報が検知されます。
一方の「変更」イベントでは、スプレッドシートの変更情報(セルの値の変更に加え、行の追加、文字色の変更など)を取得できます。
使用シーンごとの使い分け
まず、ユーザーによる変更を検知したいか、システムによる変更を検知したいかで判断します。
さらに、検知したい変更の種類と、必要な情報の種類で使い分けると良いでしょう。
編集
「編集」イベントは、ユーザーがシート内のセルを直接編集したときに検知し、変更前後の値を取得できるため、以下のようなユースケースで使用できます。
- セルの値を変更したユーザーと、値の変更内容を通知する
- セルの値が特定の範囲外の場合に警告を表示する
- ユーザーが入力した値に基づいて計算式を判別し、結果を反映する
変更
「変更」イベントは、ユーザーによる変更、外部スクリプトや他の自動化ツールによる変更のどちらでも検知するため、以下のようなユースケースで使用できます。
- システムで新しくデータが追加されたことを通知する
- シートの名前変更を監視する
- システムがデータを変更したら自動で再計算し、結果を反映する
kiharu(記事一覧)
クラウドソリューション部 クラウドエンジニアリング課。
2024年8月G-genにジョイン。
手芸好きなエンジニアです。Follow @kiharuco_