GoogleAppsScript
GoogleSpreadSheet

【GAS@SpreadSheet】スプレッドシートにある対応完了の記録を自動的に他のシートへ保存

シートAにTo Do Listの記録があります。F欄は対応状態とします。
あるTo Doを対応完了にすると、当該の記録は自動的にシートBにコピーし保存します。
その機能は、下記のコードを考えました。
トリガーの設定は以下にご参照ください。
 1. 編集>現在のプロジェクトのトリガー>新しいトリガーを追加>
 2. [実行]に当該の関数名を選択
 3. [イベント]に [スプレッドシートから]を選択
 4. [値の変更]を選択>保存


main.gs
function main() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet_s = ss.getSheetByName("source");
  var sheet_d = ss.getSheetByName("destination");

  var cell_s = sheet_s.getActiveCell();
  var cRow = cell_s.getRow();
  var cCol = cell_s.getColumn();
  var lastCol = sheet_s.getLastColumn();
  var range_s;

  if (cCol == 6) {
    // F欄はコラム値6に対応する
    if (cell_s.getValue() == "対応完了") {
      range_s = sheet_s.getRange(cRow, 1, 1, lastCol);
      // 参考:sheet.getRange(row, column, numRows)
      range_s.copyValuesToRange(sheet_d, 1, lastCol, sheet_d.getLastRow()+1, sheet_d.getLastRow()+1);
      // 参考:range.copyValuesToRange(sheet, column, columnEnd, row, rowEnd)
      // sheet_d.getLastRow()+1 は、シートの尾部に対応する
      sheet_s.deleteRow(cRow);
      //もとの記録を削除する
    }
  }
}

参考

GAS>Spreadsheet>Sheet - getRange(row, column, numRows)
GAS>Spreadsheet>Range - copyValuesToRange(sheet, column, columnEnd, row, rowEnd)