Google Apps Script(GAS)でスプレッドシートの最終行を取得する(getLastRow)

2020年8月3日

Googleスプレッドシートでデータが格納されているシートの最終行を、Google Apps Script(GAS)で取得する方法を解説します。

シート内にある全てのデータを処理する場合に、GASのgetLastRowメソッドが便利です。

スプレッドシートの最終行を取得・GAS処理

Google Apps Script(GAS) でスプレッドシートの処理を行う場合、シート内のデータを全て取得したいケースが発生します。

シート内の全てのデータを取得した上で集計を行う処理や、全行に対して行う処理などです。

スプレッドシートのシート内の全データにGASで処理する場合、最終行の取得が必要となる

その場合、シートの最終行を取得することで全データに対して処理が可能になります。

Google Apps Script(GAS) のgetLastRowメソッド

スプレッドシートの最終行を取得するGoogle Apps Script(GAS)の方法として、getLastRowメソッドが用意されています。

このメソッドを使うとシート内のセルを調べ、データが入っているセルの最終行を教えてくれます。

このgetLastRowメソッドを使えば、データ開始行から最終行までの全てのデータを取得することが可能です。

その後、forループを回すことで、各行も逐次処理を行うことができます。

getLastRowで最終行を取得するサンプルコード

実際にGoogle Apps Script(GAS)で、スプレッドシートのシートの最終行を取得するサンプルコードを紹介したいと思います。

スプレッドシートのシートの最終行を取得するGoogle Apps Script(GAS)のサンプルコード
function myFunction() {
  //スクリプトに紐付いたスプレッドシートのアクティブなシートを読み込む
  let mySheet = SpreadsheetApp.getActiveSheet();
  //読み込んだシートの最終行を取得する
  let lastRow = mySheet.getLastRow();
  //スプレッドシートで最終行を表示する
  Browser.msgBox("最終行取得", "最終行:" + lastRow, Browser.Buttons.OK);
}

GASのサンプルコードを実行すると、スプレッドシート上にポップアップメッセージで最終行が表示されます。

Google Apps Script(GAS)でスプレッドシートのシートの最終行を取得する方法

特定の範囲内に絞り込みたい場合は?

スプレッドシートのシート全体ではなく、特定の範囲内に絞り込みんだ上での最終行を取得するにはどうすればよいでしょうか?

先程のGASサンプルコードでは、シートに対してgetLastRowメソッドを利用しました。

それに対し、getRangeメソッドでスプレッドシートのシート範囲を取得した上でgetLastRowメソッドを使用すれば、getRange指定範囲内でデータが存在する最終行が取得できると考えましたが、これは不可能でした。

セル内のデータ有無を問わず、getRangeの引数で指定した「行番号+行数-1」が出力されます。

そのため、特定の範囲内で最終行を取得するにはgetRangeメソッドのセル範囲を繰り返し処理し、セルに値や数式が格納されているかチェックする処理を実装する必要があります。

GASのgetLastRowの注意点

Google Apps Script(GAS)でスプレッドシートの最終行を取得できるgetLastRowメソッドには注意すべきポイントが2点あります。

1つ目の注意点には、誤って入力されたデータでも最終行として認識されてしまう点です。

スプレッドシートに誤った値が入力されてしまうと、最終行が想定しない行数となるので注意が必要

通常入力する予定がなかった行でも、ユーザーがキーボードを誤って押すとセルに値が入力されてしまい、そのセルが最終行としてgetLastRowで取得されてしまいます。

2つ目の注意点では、予め特定の列に採番した数字を入力している場合、数字が入っている部分までが最終行として認識されてしまいます。

番号を振っている場合には、その列を対象外にしてgetRangeメソッドで範囲を設定した最終行をgetLastRowで取得します。

まとめ・終わりに

今回、Google Apps Script(GAS)でスプレッドシートのシートの最終行を取得する方法を解説しました。

GASでスプレッドシートのシートを取得した上で、getLastRowメソッドを使うと最終行が分かります。

すべての行のデータに対して処理を行うときなどに、このメソッドを使うと便利なので、ぜひご活用ください。

スプレッドシートの最終列を取得したい場合はこちら↓