GASのトリガーには2種類あります

GAS

インストーラブルトリガーとシンプルトリガーです。

スポンサーリンク

インストーラブルトリガー

//こちらはインストーラブルトリガーで、トリガー設定が必要
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/

コメント

タイトルとURLをコピーしました