【GAS】onOpen スプレッドシートを開いたときの処理 メニュー表示と最終行セル移動
先日、最終行の移動について書いた。
で、現時点で、スプレッドシートを開いたときに自動的にしたいのは、メニュー表示と最終行セル移動の二つが多いかな。
という単なるメモ。
二つをまとめたコード例は下記の通り。
コード例
/**
* 更新日 2021/12/23
* 更新者 XXXXXX
*
* シンプルトリガー onOpen()
*
* <プロジェクト概要>
* スプレッドシートを開いたときに自動的に以下を実行する
* ・独自メニューをシートに追加する
* ・スプレッドシートの最終行にセルを移動
*/
function onOpen() {
// const ui = SpreadsheetApp.getUi();
// ui.alert('★注意★\n\n現在、スクリプトを改修中です。改修終了まで、このシートの使用は控えてください。\nご協力お願いいたします。', ui.ButtonSet.OK);
addMenu();
moveToLastRow();
}
/**
* <function概要>
* 独自メニューをシートに表示する 汎用性、使いまわしの観点から、base class が良いか。
* https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet?hl=en#addmenuname,-submenus
* https://developers.google.com/apps-script/reference/base/menu?hl=en
*/
function addMenu() {
SpreadsheetApp.getUi()
.createMenu('My Menu')
.addItem('01_My Menu Item', 'myFunction01')
.addItem('02_My Menu Item', 'myFunction02')
.addItem('03_My Menu Item', 'myFunction03')
.addItem('04_My Menu Item', 'myFunction04')
.addSeparator()
.addItem('05_My Menu Item', 'myFunction05"')
.addItem('06_My Menu Item', 'myFunction06')
.addItem('07_My Menu Item', 'myFunction07')
// .addSubMenu(SpreadsheetApp.getUi().createMenu('My Submenu')
// .addItem('One Submenu Item', 'mySecondFunction')
// .addItem('Another Submenu Item', 'myThirdFunction'))
.addToUi();
}
/**
* <function概要>
* スプレッドシートの最終行にセルを移動
*
* 参考URL
* https://note.com/kawamura_/n/nb1865dfb3c77
*
* セルが空白でもとにかく最終行に移動するときは getMaxRows() を使用
*/
function moveToLastRow() {
// const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Name');
console.log(sheet.getName());
const lastRow = sheet.getRange(1, 7).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow();
console.log(lastRow);
sheet.getRange(lastRow + 1, 1).activate();
}
// const ss = SpreadsheetApp.getActiveSpreadsheet();
// const sheet = ss.getActiveSheet();
// const lastRow = sheet.getMaxRows();
// sheet.getRange(lastRow, 1).activate();
改修中のメッセージもコメントアウトで入れてある。
function onOpen() の中に全部書いてもいいけど、
機能ごとに切り分けたほうがメンテしやすいかなと思った。
こういう、考え方?基準?みたいなやつ、なんかあると思うんだけど、何ていうんだろう。
別件で、似たようなコードを複数行書いてて、もったりしてて、かったるいので、それをなんとかしたい。なんかこう、ループ処理とか反復メソッドとか、とにかく、なんかいい処理があるはずなんだけど、よくわからんくなってきた。
今日はそんな感じです。
追記
GitHub
いいなと思ったら応援しよう!
いただいたサポートで、書籍代や勉強費用にしたり、美味しいもの食べたりします!