LoginSignup
3

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-09-03

シート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)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3