先日「GAS、最終行や最終列の取得」という備忘録をメモったのですが、このテクニックを使って開発したツールの納品先からうまく動かないよーとお知らせが。
よくよく聞くと、うまく最終行が判断できてないことが影響していることが分りました。ということで、今回は、タイトルどおりの備忘録となります。
「指定列の」がポイントです!
■ シート全体としての最終行、最終列の取得
最終行を取得するにはgetLastRow()、最終列にはgetLastColumn()です。
例えば次のような状態に対して…
次のとおりソースを組んで…
実行結果は次のとおり、赤枠の入力値"4"から導き出される最終行7、入力値"5"から導き出される最終列5(E列)が取得できることがご確認いただけると思います。
■ 指定列の最終行の取得
スプレッドシート全体としての!ではなく、特定の列における最終行を求める場合は、一工夫必要です。
次の図のとおり、データが入力されているとします。
もしかしたら色々なやり方があるのかもしれませんが、今回は…
指定された列の(シート的)最終セルから
上方向へ、値が入っているセルまで移動する (Ctrl + ↑キーを押した際と同様の動き)
というアプローチをスクリプトで再現します。
例えばA列の最終行を調べるのであれば、ソースは次のとおりです。
最終セルは、getRange(sheet.getMaxRow(), 1)ですね。
getMaxRows()は、シート上の最大行を取得します。
上へ向かって…は、getNextDataCell(SpreadsheetApp.Direction.UP)ですね。
最終的に次のとおりソースを組みました。
すると結果は、このとおり。
各列の最終行を確実に取得できました!
■ まとめ
いかがでしたでしょうか?
特定列の最終行を取得できるようになると、スプレッドシート全体の最終行を獲得するノウハウは使う機会は少ないかもしれませんね💦
また、新たなテクニックを覚えたら備忘録したいと思います。
Comments