見出し画像

【GAS】チェックが入ったら別のシートに転記するスクリプトを作りたい|getValues

例えば、Aのリストにチェックリストがあり、チェックを入れた行を別のシートの末尾に転記したい…といったプログラムを作ってみます。

行のデータを別のシートにコピーする

Google Apps Script(GAS)を使用して、特定の条件が満たされた場合に、スプレッドシート上のデータを別のシートに自動的に転記する方法について説明します。

まず、以下のスクリプトを使用して、特定の列にチェックボックスがクリックされたときに、その行のデータを別のシートにコピーする関数を作成します。

今回は「1列目のチェックボックスがチェックされたとき」という1列目のみを検知したいので、e.rangeで現在位置(セル)を検知させて、1列目の場合のみ、を入れいています。念のため、ログで値もキャッチしておきます。

function copyData(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = ss.getSheetByName('Sheet1'); // チェックボックスがあるシート名
  var sheet2 = ss.getSheetByName('Sheet2'); // コピー先のシート名
  var range = sheet1.getDataRange();
  var values = range.getValues();
  const cell = e.range;
  const column = cell.getColumn();
  const row = cell.getRow();

  Logger.log("column:" + column);
  Logger.log("cell:" + cell);
  Logger.log("row:" + row);

  const lastRow1 = sheet1.getLastRow();
  const lastCol1 = sheet1.getLastColumn();
  const lastRow2 = sheet2.getLastRow();
  const lastCol2 = sheet2.getLastColumn();
  Logger.log("lastRow1:" + lastRow1);
  Logger.log("lastRow2:" + lastRow2);
  Logger.log("lastCol1:" + lastCol1);
  Logger.log("lastCol2:" + lastCol2);

  var destValues = [];
  Logger.log("destValues:" + destValues);

  if (column === 1 && e.value === "TRUE") {
    destValues=sheet1.getRange(row, 1, 1, lastCol1).getValues();
    Logger.log("destValues:" + destValues);
    sheet2.getRange(lastRow2+1,1, 1, lastCol1).setValues(destValues);
  }
}

このスクリプトは、Sheet1の特定の列にあるチェックボックスがクリックされたときに、その行のデータをSheet2に自動的にコピーします。


ひとまずスクリプトを実行して、アカウントに実行権限を与えておきます。


続きはこちら
https://eguweb.jp/gas/62399/


この記事が参加している募集

仕事について話そう

サポートお願い致します!