2021年7月2日金曜日

Google SpreadSheet でカーソルを移動する方法

Google SpreadSheet でカーソルを移動する方法

概要

例えばスプレッドシートを開いたときに特性のセルにカーソルを移動したい場合などに使えます

環境

  • 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 件のコメント:

コメントを投稿