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行目、"<" が 特殊文字"<"になっていたのを修正 for (var i = 1; i < maxRow; i++) { ↓ for (var i = 1; i < maxRow; i++) { 2019/04/12: ・if 文で、breakしていなかったのを修正 ・日付チェック開始行を指定できるように修正。
トリガー設定
スプレッドシートを開いた時に onOpen() が呼ばれるようにトリガーを設定します。
”スクリプトエディタ”の”現在のプロジェクのトリガ(時計マーク)”をクリックし、下図のように
実行 → “onOpen”
イベント → “スプレッドシートから” “起動時”
を設定し、”保存” をクリックし保存します。
