インストーラブルトリガーとシンプルトリガーです。
インストーラブルトリガー
//こちらはインストーラブルトリガーで、トリガー設定が必要
function installable(e){
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('シート1');
const range = e.range;
const row = range.getRow();
const col = range.getColumn();
const value = e.value;
if(row == 1 && col == 1 && value == 'TRUE'){
const now = new Date();
const timestamp = Utilities.formatDate(now, "JST", "yyyy/MM/dd' 'HH:mm:ss");
const check = sheet.getRange("A1").getValue();
if(check == ""){
sheet.getRange("B1").setValue(timestamp + "");
return;
}
}
return;
}
普通にトリガー設定で使います。
編集時に起動するトリガーで特定のセルが変更されたら処理するように書きましょう。
↑の例だとA1をチェックボックスにしてチェックボックスがTRUE(チェック済み)になるとB1にタイムスタンプが表示されます。
インストーラブルトリガーでは編集されたセルのプロパティが引数として利用できます。
e.range で編集されたRangeオブジェクト
e.range.getRow() すると編集された行が取得できます。
e.value で編集されたセルの値が取得できます。
シンプルトリガー
//こちらはシンプルトリガーで、設定は不要
function onEdit(e){
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('シート2');
const range = e.range;
const row = range.getRow();
const col = range.getColumn();
const value = e.value;
const now = new Date();
const timestamp = Utilities.formatDate(now, "JST", "yyyy/MM/dd' 'HH:mm:ss");
if(row == 1 && col == 1 && value == 'TRUE'){
const check = sheet.getRange("A1").getValue();
if(check == ""){
sheet.getRange("B1").setValue(timestamp + "");
sheet.getRange(row,col).clearContent();
return;
}
}
return;
}
シンプルトリガーには2種類あります。
編集されたときに実行したい場合はfunction onEdit(e){} という形で記述する必要があります。
スプレッドシートを開いたときに実行したい場合はfunction onOpen(e){} です。
コードの内容はインストーラブルトリガーのやつと殆ど同じです。
シンプルトリガーは1つのスプレッドシートに1つだけしか使用できないので使いどころを考え、インストーラブルトリガーと併せて使い方を考えましょう。
スプレッドシートで使う分には上記だけ知っておけば大丈夫だと思います。
他にも色々あるようですが、公式リファレンスに任せます。(英語です)
https://developers.google.com/apps-script/guides/triggers/installable
https://developers.google.com/apps-script/guides/triggers/
コメント