概要
例えばスプレッドシートを開いたときに特性のセルにカーソルを移動したい場合などに使えます
環境
- macOS 11.4
- Chrome 91.0.4472.106
- Google SpreadSheet
- Apps Script
サンプルコード
例えば一番左上にカーソルを合わせる場合は以下のような感じになります
ポイントは Range に対して activate()
する点です
function setCursorToStart() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
var range = sheet.getRange("A1").activate();
// var range = sheet.getRange(1, 1).activate(); こっちでも OK
}
ちょっと応用1: 起動時に移動させる
onOpen というイベントハンドラが用意されているのでそれを実行してあげます
function onOpen(e) {
setCursorToStart();
Browser.msgBox("Automatically moved cursor to today's cell.");
}
ダイアログはテストのために入れているので実際は消してください
ちょっと応用2: 特定の条件に合致したセルに移動する
例えば日付を管理しているカラムがある場合に今日の日付のセルに移動したりもできます
以下のサンプルでは A 列で日付を管理しています
new Date()
で今の時刻を取得できるのであとは年月日を照らし合わせているだけです
row と col が String になっているので parseInt で変換してから Range を取得しましょう
function moveCursorToToday() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
var range = sheet.getRange("A:A");
var a_values = range.getValues();
var date = new Date();
for (var row in a_values) {
for (var col in a_values[row])
if (checkToday(date, a_values[row][col])) {
var range = sheet.getRange(parseInt(row) + 1, parseInt(col) + 1).activate();
return;
}
}
}
function checkToday(day, oday) {
if (day.getFullYear() == oday.getFullYear() && day.getMonth() == oday.getMonth() && day.getDate() == oday.getDate()) {
return true
}
return false
}
0 件のコメント:
コメントを投稿