【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/
この記事が参加している募集
サポートお願い致します!