見出し画像

[GAS]スプレッドシートを開いたら自動的に、途中に空白セルがあってもシート最終行のセルに移動する 


元ネタ

カワムラさんの便利なコードを拝借して、改変しました。

コード例

function onOpen({
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  const lastRow = sheet.getMaxRows();
  sheet.getRange(lastRow, 1).activate();
}

 カワムラさんのコードでは、

const lastRow = sheet.getRange(11).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; みたいに使うことがないから、引数なしという、そういうこと、かな??



カワムラさん、ありがとうございます!


おわり。

いただいたサポートで、書籍代や勉強費用にしたり、美味しいもの食べたりします!