【GAS】onEditで特定のシートや特定のセルの変更で実行する方法

GAS

onEditのeventで取得できるオブジェクト

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()編集されたセルの列数を取得

GASの特定のイベント発生で動くシンプルトリガー

シンプルトリガー内容
onOpen(e)スプレッドシートを開いた時
onInstall(e)アドオンのインストールがされた時
onEdit(e)スプレッドシートが編集された時
onSelectionChange(e)スプレッドシートの選択を変更した時
doGet(e)Webアプリにアクセスした時
doPost(e)Webアプリに送信する時

一部例

function onEdit(e) {

  //evant(e)からアクティブシートを取得
  var sheet = e.source.getActiveSheet();

  console.log('evant(e)からアクティブシート名を取得 =', e.source.getSheetName())
  console.log('シート名  =', sheet.getName())
  console.log('変更範囲  =', e.range)
  console.log('編集されたセルの行数を取得 =', e.range.getRow())
  console.log('編集されたセルの列数を取得 =',  e.range.getColumn())
  console.log('変更範囲(開始行)  =', e.range.rowStart)
  console.log('変更範囲(終了行)  =', e.range.rowEnd)
  console.log('変更範囲(開始列)  =', e.range.columnStart)
  console.log('変更範囲(終了列)  =', e.range.columnEnd)
  console.log('変更前の値 =', e.oldValue)
  console.log('変更後の値 =', e.value)
  console.log('変更後の値 =',e.range.getValue())
  console.log(' セル位置を取得 =', e.source.getActiveRange().getA1Notation())
}
function onEdit(e) {

  //対象にしたいシート名を入力
  var sheetN = 'シート1';

  var v_value = 'テストです。';

  //指定したいセル(A1など)を入力
  var range_1 = 'B3';
  var range_2 = 'K3';

  var hidden_field_start = 10; // 何行目から消すのか
  var hidden_field_end = 20; // 何行目まで消すのか

  //evant(e)からアクティブシート名を取得
  var sheetName = e.source.getSheetName();

  var cellPosition = e.source.getActiveRange().getA1Notation();

  //編集されたシート名と対象にしたいシート名が一致したら実行
  if(sheetName === sheetN){
    if(cellPosition == range_1 || cellPosition == range_2){
      var copyRange = e.source.getActiveSheet().getRange("E"+ hidden_field_start + ":E" + hidden_field_end); //セル範囲(E29:E69)を取得

      if(cellPosition == range_1){
        var mergeRange = e.source.getActiveSheet().getRange("F"+ hidden_field_start + ":F" + hidden_field_end); //セル範囲(F29:F69)を取得
      }

      if(cellPosition == range_2){
        var mergeRange = e.source.getActiveSheet().getRange("N"+ hidden_field_start + ":N" + hidden_field_end); //セル範囲(F29:F69)を取得
      }

      if(e.range.getValue()){
        // セール結合 水平方向
        // mergeRange.mergeVertically();
        // セール結合 垂直方向
        mergeRange.mergeVertically();
        mergeRange.setValue(v_value).setVerticalText(true).setVerticalAlignment("middle").setHorizontalAlignments("center");
        // mergeRange.setBackground("#ffff00"); //セル範囲(D2:D21)の背景色をセル範囲(F2:F21)に適用
      }
      else{
        // セール解除
        mergeRange.breakApart();
        // 値削除
        mergeRange.setValue('');
        copyRange.copyTo(mergeRange);
      }
    }
  }
}

コメント