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

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;
}

コメント

タイトルとURLをコピーしました