#やりたいこと
下記のようなデータがあります。
# | 動物 |
---|---|
1 | パンダ |
2 | うさぎ |
3 | コアラ |
4 | |
5 |
**A列「#」を除いて、**データが含まれる最終行(上記の場合は4)を取得したいと思います。
※1列目の"#"も、データに含まれているものとします。
#結論
該当列の値を配列で取得し、その数を取得することで最終行数に代替します。
function getLastRowWithValue() {
const sheet = SpreadsheetApp.getActiveSheet();
const columnBVals = sheet.getRange('B:B').getValues(); // B列「動物」の値を配列で取得
const LastRow = columnBVals.filter(String).length; //空白を除き、配列の数を取得
Logger.log(LastRow); //4.0
}
#上手くいきそうでいかない方法
##Sheet.getLastRow()を使う
function getLastRowWithValue() {
const sheet = SpreadsheetApp.getActiveSheet();
const LastRow = sheet.getLastRow();
Logger.log(LastRow); //6.0
}
データが含まれる最終行を返却するメソッドですが、今回はA列に値が入っているので期待値は返ってきません。
##Range.getLastRow()を使う
function getLastRowWithValue() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange('B:B'); //B列を指定
const LastRow = range.getLastRow();
Logger.log(LastRow); //6.0
}
データ有無に関係なく、指定範囲の最終行が返却されてしまいます。
#参考サイト