GoogleSpreadSheetで、指定した範囲の、データが含まれている最終行を取得する方法。

やりたいこと

下記のようなデータがあります。

# 動物
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
}

データ有無に関係なく、指定範囲の最終行が返却されてしまいます。

参考サイト

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.