Google Apps Script(GAS)でスプレッドシートの最終行を取得する(getLastRow)
Googleスプレッドシートでデータが格納されているシートの最終行を、Google Apps Script(GAS)で取得する方法を解説します。
シート内にある全てのデータを処理する場合に、GASのgetLastRowメソッドが便利です。
スプレッドシートの最終行を取得・GAS処理
Google Apps Script(GAS) でスプレッドシートの処理を行う場合、シート内のデータを全て取得したいケースが発生します。
シート内の全てのデータを取得した上で集計を行う処理や、全行に対して行う処理などです。
その場合、シートの最終行を取得することで全データに対して処理が可能になります。
Google Apps Script(GAS) のgetLastRowメソッド
スプレッドシートの最終行を取得するGoogle Apps Script(GAS)の方法として、getLastRowメソッドが用意されています。
このメソッドを使うとシート内のセルを調べ、データが入っているセルの最終行を教えてくれます。
このgetLastRowメソッドを使えば、データ開始行から最終行までの全てのデータを取得することが可能です。
その後、forループを回すことで、各行も逐次処理を行うことができます。
getLastRowで最終行を取得するサンプルコード
実際にGoogle Apps Script(GAS)で、スプレッドシートのシートの最終行を取得するサンプルコードを紹介したいと思います。
function myFunction() {
//スクリプトに紐付いたスプレッドシートのアクティブなシートを読み込む
let mySheet = SpreadsheetApp.getActiveSheet();
//読み込んだシートの最終行を取得する
let lastRow = mySheet.getLastRow();
//スプレッドシートで最終行を表示する
Browser.msgBox("最終行取得", "最終行:" + lastRow, Browser.Buttons.OK);
}
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メソッドを使うと最終行が分かります。
すべての行のデータに対して処理を行うときなどに、このメソッドを使うと便利なので、ぜひご活用ください。
スプレッドシートの最終列を取得したい場合はこちら↓
ディスカッション
コメント一覧
まだ、コメントがありません