![見出し画像](https://assets.st-note.com/production/uploads/images/102703729/rectangle_large_type_2_006608b7c7c6b70240b9f8cade3bf20f.jpeg?width=1200)
【GAS】特定の列で空白セルが見つかったらその行にデータを書き込む
Google Apps Script(GAS)を使用して、Google Sheetsの特定の列で空白セルが見つかった場合に、その行にデータを書き込む方法について説明します。
以前、「シート内のチェックが入った行を別シートに転記したい」という話を書きましたが、その続きのような内容です。
チェックが入ったら別のシートに転記するスクリプト
以前、このような「チェックが入ったら別のシートに転記するスクリプト」を作りました。
![](https://assets.st-note.com/img/1681146608137-KPaOSsLOBl.jpg?width=1200)
チェックを入れた行が別のシートに転記されます。便利ですね。
![](https://assets.st-note.com/img/1681146616111-zdQYYCAPjb.jpg?width=1200)
発行IDを発番したい
今回の要件は、少し内容を変えて「予め発行されているID列を、チェックを入れたタイミングで次々に付与したい」という内容です。
実行:列のチェックが入る。
![](https://assets.st-note.com/img/1681146619637-AIooI0IZTQ.jpg?width=1200)
![](https://assets.st-note.com/img/1681146622334-mQJZcay1AI.jpg?width=1200)
結果:別シートに、予め発行されたIDを付与して追加する。
![](https://assets.st-note.com/img/1681146628331-35djBeOT58.jpg?width=1200)
このような感じの内容です。
前回までの復習
前回まではこのような感じの内容で作成しました。destValuesとsetValuesで別シートにデータを転記しています。
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();
const lastRow1 = sheet1.getLastRow();
const lastCol1 = sheet1.getLastColumn();
const lastRow2 = sheet2.getLastRow();
const lastCol2 = sheet2.getLastColumn();
var destValues = [];
if (column === 1 && e.value === "TRUE") {
destValues=sheet1.getRange(row, 1, 1, lastCol1).getValues();
sheet2.getRange(lastRow2+1,1, 1, lastCol1).setValues(destValues);
}
}
こちらを調整してみます。
列内の空白のセルを探す
まずは、今回の場合はB列の状態を見て末尾を判断したいので、getLastRow()がそのまま使用できません。getLastRow()を使ってそのまま書き込みをしまうと、自動的に末尾行を見つけてしまうので、最下部に追加されてしまいます。
いいなと思ったら応援しよう!
![eguweb](https://assets.st-note.com/production/uploads/images/128772862/profile_0d1f4028e5611b5742ea863753e41113.png?width=600&crop=1:1,smart)