Google Spreadsheetでシートを開いたら、今日のセルへ移動 で列方向(横方向)に日付が配置されている場合のニーズが高いようなので、
(行方向(縦方向)は → [Google Apps Script] Googleスプレッドシートを開いた時に、今日の入力セルへ自動ジャンプ )
// onOpen関数はスプレッドシートが開けられる度に自動的に実行される function onOpen() { goToTodayCell(5,1); // 日付開始セルの指定 行番号,列番号(A列が1) } function goToTodayCell(StartRow, StartColumn ) { //var StartRow; // 日付セル開始行 //var StartColumn; // 日付セル開始列 A列が1 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // sheet.getRange(1,1).setBackground("red"); // 実行中表示 var maxColumn = sheet.getMaxColumns();//最終列を取得 var dateRowsValues = sheet.getRange(StartRow, StartColumn , 1, maxColumn).getValues(); // 対象行の日付を配列に格納(高速化のため) var today = new Date(); var stringToday = yyyymmdd(today); var matchColumn = -1; // マッチする列が無かったら -1 for (var column = 0; column < maxColumn-1; column++) { //var dateValue = yyyymmdd(dateRowsValues[i][StartRow-1]); // 配列は 0から、シートは1から var dateValue = yyyymmdd(dateRowsValues[StartColumn-1]); // 配列は 0から、シートは1から if(stringToday == dateValue){ matchColumn = column+1; // 配列は 0から、シートは1から break; } } // sheet.getRange(1,1).setBackground("white"); // 実行中表示解除 if(matchColumn === -1){ Browser.msgBox(StartRow + "行目に今日(" + stringToday + ")に該当するセルが見つかりませんでした", Browser.Buttons.OK); } else { sheet.getRange(StartRow, matchColumn).activate(); // セルへ移動 } 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; }
コメント