GASの関数getLastRowでスプレッドシートの最終行を取得したいときにFILTER関数やUNIQUE関数で一番下のデータまで取得した場合だと、空白も含めてシート全ての行を取得してしまいます。
=Filter(A1:A,)
=UNIQUE(A1:A)
みたいに下の行を全部取得した時。
この時にデータが入っている部分の最終行を取得したい時の記述方法です。
空白を除く最終行を取得する
結論から言うとFilterやUNIQUEを使った場合、getLastRowでは空白行も入ってしまうので使いません。
その代わりに以下の方法で空白を取り除いて取得します。
const ss = SpreadsheetApp.openById("シートID");
const sheet = ss.getSheetByName('シート名');
// 空白データではない行数を取得する方法①
const rows = sheet.getRange('A1:A').getValues(); //A列の値を全て取得
const lastRow = rows.filter(String).length; //空白の要素を除いた長さを取得
Logger.log(lastRow);
// 空白データではない行数を取得する方法②
const rows = sheet.getRange('A1:A').getValues(); //A列の値を全て取得
const lastRow = rows.filter(row => row[0] !== '').length;
Logger.log(lastRow);
①と②どちらの方法でも、空白でない最終行までを取得できます。