googlespreadsheetで今日の日付に移動する関数を作成
予定管理、実績記録用にgooglespreadsheetで、自作システム手帳のようなものを作っている
googleカレンダーなどのカレンダーアプリは予定の一覧性が低く、苦手
1日に複数の用事があると、途端にわかりにくくなる
システム手帳も、枠のついたメモ帳と考えれば、excel系の表計算アプリでも似たようなことはできるはず
システム手帳にも汎用性が求められているので、汎用性の面でいえば表計算アプリはかなり柔軟
天気予報をAPIで自動記録したりもしている。かなり便利。1年前の日記と天気を比較したりもできて面白く使っている
しかし、spreadsheetの立ち上げ時に、毎回今日の日付まで移動するのが面倒に感じていたため、今回自動化した
setActiveSelectionという機能を使うと実現できた
もともと、天気予報の自動貼り付け機能で、本日のセルを選択する部分は作ってあり、正常に動作することも確認していたので、実装は比較的楽(15分ぐらいでできた?)だった
これと同様のことを実施したかった
参考:特定のセルへ移動するスクリプト
https://groups.google.com/g/google-apps-api-japan/c/unoRCEI5lRo?pli=1
https://gyazo.com/f938ff16803b9e8a904048ac3213046c
https://gyazo.com/c65809bbbc8bcd7bbb230ae2292d9c54
実行したときの様子
立ち上げ後、4~5秒後に今月のシートの今日の日付に移動している
意外と今日の日付に移動する手間がある
手帳も、今日のページを探すのが面倒だったりする
毎日繰り返す、細かい作業を自動化すると、想像以上に自由になる感じがするのでお勧め
https://gyazo.com/b6e1b644007271f4f61d8cf75c383f14
関数のコードそのまま張り付け
https://gyazo.com/c3c4cbf64db6719dcd08c06414e6f930
function startTodayActive(){
//各月の予定シート関係の定数
var dateRow = 1;//各月の予定シートの日付の記載されている行、1行目に記載されているはず
var dateColumn = 9;//各月の予定シートの日付の記載されている列、9列目(I列)に記載されているはず
var scheduleRow = 2;//各月の予定シートの日毎の予定の記載されている行、2行目に記載されているはず
var now = new Date();//現在時刻、日付の取得
var now_yyMM =Utilities.formatDate(now, "JST", "yyMM");//現在時刻を年月の書式に変更
Logger.log(now);//確認用
Logger.log(now_yyMM);
var thisMonthSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(now_yyMM);//伊勢Todoの今月シートを取得
var firstDayOfThisMonth = thisMonthSheet.getRange(dateRow,dateColumn);//1行9列目が当月一日の日付が入力されたセル、シートの書式を変更した場合は修正が必要
var dateFirstDay = firstDayOfThisMonth.getValue();
Logger.log(dateFirstDay);
if(now_yyMM == Utilities.formatDate(dateFirstDay, "JST", "yyMM") ){//念のため、yyMMタブの月初めのセルの内容を確認、当月一日なら実行
Logger.log('今月であることを確認しました');
var column_today = Utilities.formatDate(now, "JST", "dd")-1;
Logger.log(column_today);
var todayOfThisMonth = thisMonthSheet.getRange(scheduleRow,dateColumn+column_today);//当日予定セルの範囲取得
thisMonthSheet.setActiveSelection(todayOfThisMonth);
}
}
0 件のコメント:
コメントを投稿