【初心者向けのGAS】スプレッドシートの最後の行(最終行)を取得する方法

よこのじ(@yokonoji_work)です。

Google Apps Script(GAS)で「スプレッドシートの最後の行(最終行)を取得する方法」をご紹介します。

セルを指定する方法「【初心者向けのGAS】スプレッドシートの範囲指定したセルから値を取得する方法」と合わせてご活用ください。

最後の行(最終行)を取得する方法

スプレッドシートの最後の行(最終行)を取得するためには、対象のシートを指定しておく必要があります。

// スプレッドシートを取得する 
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
// シートを取得する
var sheet = spreadsheet.getSheetByName("シート1");

シート全体の最後の行(最終行)を取得する方法

シート全体の最後の行(最終行)を取得するには、getLastRowメソッドを使用します。

var lastRow = sheet.getLastRow();

シート全体の最後の行(最終行)を取得するため、最も行数が多いB列が対象となります。よって、次の例では lastRow に 4 という結果が格納されます。

シート全体の最終行を取得

ちなみに、途中の行が空だったらどうなるか?ですが、空白があっても値がある最終行を検知してくれました。下図のような場合、最終行は 7 と返してくれます。

行が2つ空の時の最終行

特定の列の最後の行(最終行)を取得する方法

各列の最終行を取得したい場合もあるかと思います。

そんな場合は、lastRow関数のような方法で指定した列の最終行を取得できます。

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = spreadsheet.getSheetByName("シート1");

function myFunction() {
  // シート全体の最終行を取得
  var lastRowAll = sheet.getLastRow();
  // 取得したい列を指定 A列=>1, B列=>2,・・・
  var column = 3;

  // 指定した列の最終行を取得
  var last_row = lastRow(lastRowAll, column);
  Logger.log(last_row);
}

function lastRow(lastRowAll, column) {
  var range = sheet.getRange(1, column, lastRowAll, column).getValues();
  for(var i=lastRowAll-1; i>=0; i--){
    if(range[i][0] != ""){
      return i + 1;
    }
  }
}

lastRow関数には「シート全体の最終行」と「最終行を取得したい列」を引数として渡しています。

これらの情報を元にして、下図のように空ではないセルを探します。そして、値があればその行が最終行となります。

特定の列の最終行

var column = 3; (C列)を指定すると最終行は 9 となりますし、B列なら10、A列なら3といった値を取得できます。

 

最終列を取得したい場合は「【初心者向けのGAS】スプレッドシートの最後の列(最終列)を取得する方法」を参照ください。

Google Apps Script(GAS)は、やりたいことを検索すると共有情報を見つけられるのが良い。