[GAS]スプレッドシートを開いたら自動的に、途中に空白セルがあってもシート最終行のセルに移動する
元ネタ
カワムラさんの便利なコードを拝借して、改変しました。
コード例
function onOpen() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getActiveSheet();
const lastRow = sheet.getMaxRows();
sheet.getRange(lastRow, 1).activate();
}
カワムラさんのコードでは、
const lastRow = sheet.getRange(1, 1).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow();
となっているので、上から見ていって、空白セルがあったらそこでlastRowとなる。これはコードが悪いとかでなくて、そういう仕組みだから。
あとシートのつくりかた、空白セル置くなって話もあるかもしれないが。
まあとにかく、getMaxRows(); で最後のMaxRowsを取ってくるという力技でなんとかなる場合はこれでよいかなー。
getMaxRows()
Returns the current number of rows in the sheet, regardless of content.
シンプルトリガーとインストーラブルトリガ
onOpenはシンプルトリガーだから、下図のように設置するトリガーは不要。あーなんだっけこれ、名前…インストーラブルトリガだ!
んん?待って待って、
onOpen()
onOpen(e)
があるじゃん?
その違いは?
https://developers.google.com/apps-script/guides/triggers/events?hl=en
eがイベントオブジェクトなのはわかった。で、なんていうか、使い分け??違い?がよくわからんくなってきた。う~~~~ん。
え、あれ、eをコードの中で使いたいかどうか、そういうこと?でいいの?
今回は const range = e.range; みたいに使うことがないから、引数なしという、そういうこと、かな??
カワムラさん、ありがとうございます!
おわり。
いただいたサポートで、書籍代や勉強費用にしたり、美味しいもの食べたりします!