[Google Apps Script] Googleスプレッドシートを開いた時に、今日の入力セルへ自動ジャンプ

ネット・PC

Googleスプレッドシートで、毎日データを記入しているものがある場合に、スプレッドシートを開いた時に、自動的にその日の入力セルにジャンプしてくれると便利です。

(列方向(横方向)版は → Google Spreadsheetでシートを開いたら、今日のセルへ移動(列版))

スクリプト

googleスプレッドシートの “ツール” → “スクリプトエディタ” で、以下のスクリプトを貼り付けます。

日付列(または、シートの全データ)を配列に読み込み、今日の日付と同じ行を調べ、その行と指定された列番号のセルに移動させています。
(配列に読み込まず、セルをの一つづつ調べていくと、処理がかなり遅くなってしまいます。)
日付列は、日付データであれば、シート上の表示形式は違っていても大丈夫です。

// onOpen関数はスプレッドシートが開けられる度に自動的に実行される
function onOpen() {
  goToTodayCell(1 , 3 ,2 ); // 日付列 A列→1 ジャンプさせるカラム番号 C→3 日付チェック開始行 2
  //goToTodayCell(2, 3, 21); // 日付列 B列→2  ジャンプさせるカラム番号 C→3 日付チェック開始行 21
}

function goToTodayCell(dateColNo, jumpColNo ,startRow ) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.getRange(1,1).setBackgroundColor("red");
  var maxRow = sheet.getMaxRows();//最終行を取得
  var values = sheet.getRange(startRow, dateColNo , maxRow).getValues();  // 対象絡カラムのみを配列に格納
  var today = new Date();
  var stringToday = yyyymmdd(today);
  var matchRow = maxRow; // マッチする行が無かったら最終行へ
  for (var i = 0; i < maxRow; i++) {
    var dateValue = yyyymmdd(values[i][0]);
    if(stringToday == dateValue){
      matchRow = i + startRow ; // 配列は 0から、シートは1から
      sheet.getRange(matchRow, jumpColNo).activate();  // セルへ移動
      break;
    }
  }
  sheet.getRange(1,1).setBackgroundColor("white");
  return;
}

// dateを日付のみにする
// Mon Jan 21 2013 13:37:00 GMT+0900 (JST)  ->  2012/07/05
function yyyymmdd(dateVal)
{
  var stringDate
  var date = new Date(dateVal);
  if(date.toString() == 'Invalid Date'){  //日付データでない
    stringDate = date;
  } else {
    stringDate = date.getFullYear() + "/" + ("0" + (date.getMonth()+1)).slice(-2) + "/" + ("0" + date.getDate()).slice(-2);
  }
  return stringDate;
}
2018/12/08:  28行目、"<" が 特殊文字"&lt;"になっていたのを修正
for (var i = 1; i &lt; maxRow; i++) {
↓
for (var i = 1; i < maxRow; i++) {

2019/04/12:
・if 文で、breakしていなかったのを修正
・日付チェック開始行を指定できるように修正。

トリガー設定

スプレッドシートを開いた時に onOpen() が呼ばれるようにトリガーを設定します。

”スクリプトエディタ”の”現在のプロジェクのトリガ(時計マーク)”をクリックし、下図のように
実行 → “onOpen”
イベント → “スプレッドシートから” “起動時”
を設定し、”保存” をクリックし保存します。

google apps script トリガー
タイトルとURLをコピーしました