onEdit(e)の使い方は、関数名(function)に「onEdit(e)」とすると使えるようになります。
eventから情報を引っ張ってくることが可能です。
function onEdit(e){
//処理
}
onEditの(e)とは、ユーザーがスプレッドシートの変更・編集を行なった時に実行される、編集時のイベントを拾うためのスクリプトです。
onEdit(e)が実行される条件
全シート全セルが対象で実行されるため、
実行された時に特定のセルに対する処理を書くことで、
特定セルが編集された時に実行させるということができるようになります。
function onEdit(e){
編集時の情報取得;
if文やswitch文で特定のセルを指定して実行;
}
値の入力やコピペ、削除など、
基本的にユーザーが手動で行なった全てのことに対して実行されます。
onEdit(e)が実行されないもの
関数やGASなどによって自動実行されたものや、
importrangeのような参照をしている場合は、
参照値が変わっても、編集とは見なされず実行されません。
参照値の変更で実行させるには少し手間が必要になります。
onEditを参照でも実行させる方法はこちらで解説しています。
トリガーやonEditで実行されない処理を実行させる
onEdit(e)のe(event-イベント)で拾えるもの
onEdit(e)のイベントで拾えるもので、よく使用するオブジェクトです。
onEditのeventで取得できるオブジェクト | 内容 |
---|---|
e.source.getName() | アクティブスプレッドシートを取得 |
e.source.getActiveSheet() | アクティブシートを取得 |
e.source.getSheetName() | アクティブシート名を取得 |
e.source.getSheetByName('シート名') | シート名を指定して取得 |
e.value | 編集されたセルの値を取得 |
e.range.getValue() | 編集されたセルの値を取得 |
e.oldValue | 編集される前のセルの値を取得 |
e.range.getRow() | 編集されたセルの行数を取得 |
e.range.getColumn() | 編集されたセルの列数を取得 |
//evant(e)からアクティブスプレッドシートを取得
var ss = e.source.getName();
//evant(e)からアクティブシートを取得
var sheet = e.source.getActiveSheet();
//evant(e)からアクティブシート名を取得
var sheetN = e.source.getSheetName();
//evant(e)からシート名を指定して取得
var sheet1 = e.source.getSheetByName('シート1');
//編集されたセルの値を取得
var value1 = e.value;
var value2 = e.range.getValue();
//編集される前のセルの値を取得
var oldvalue = e.oldValue;
//編集されたセルの行数を取得
var row = e.range.getRow();
//編集されたセルの列数を取得
var col = e.range.getColumn();
onEditの使い方、コピペで使えるサンプルコード
onEditの使い方や、サンプルコードはこちらでまとめています。
コピペで使えるonEditサンプルコード
シート指定や、特定のセル指定のコピペで使えるサンプルコードや、
ダウンロードして実際に動かせるサンプルデータの配布を行なっています。
onEditが動かない、トラブルやエラーが起きた
onEditが動かない原因で多いのは権限の問題です。
onEditの実行権限は一番低いものが設定されていて、別のシートを参照やメール送信、外部アプリとの連携などは権限の取得ができないため使用できません。
onEditが動かない原因と対処法などはこちらでまとめています。
GASのonEditが動かない原因3選と対処法
onEdit(e)は少し癖のある関数ですが、
使いこなすと便利になりますので、各記事でダウンロードできるサンプルデータなどで動きを確認して使ってみてください。
このサイトで配布しているサンプルデータのほとんどにonEditを使用しています。
onEditの参考記事はこちら
特定のセルが変更されたら、特定のセルに入力があれば処理、参照セルも可能
onEditで特定のシートや特定のセルの変更で実行する方法まとめ
実際にコードに触れたり動かしたりした方が、
身につきやすいし応用もしやすくなるので、ぜひ活用してみてください。
ありがとうございました!
コメント