スプレッドシート開いたら、今日の日付の行や列を選択するスクリプト作ったので共有します。
今日の日付の列を選択
今日の日付の行を選択

スプレッドシートで今日の日付に移動するスクリプト
需要があるか分かりませんが、
みたいな2種類のスクリプト作ってみました。
シート開いたら今日の日付の列を選択するやつ
日付を横並びで配置しているとき、スプレッドシート開くと今日の日付の列を選択してくれるスクリプトです
/*シート開いたら今日の日付列を選択(日付横並びVer)*/
function onOpen(){
var ss = SpreadsheetApp.getActive();
var sht = ss.getSheetByName('横並び').activate();
ss.getRange('B1').activate();
//列数をゲッツ
var kyou = ss.getCurrentCell().setFormula('=MATCH(TODAY(),2:2,0)');
ss.getActiveRangeList().setNumberFormat('0');
var day = ss.getCurrentCell().getValue();
//今日の日付のセルに移動
sht.getRange(2,day).activate();
//列を選択
var val = ss.getCurrentCell().getA1Notation().slice(0,1);
var col = val+':'+val;
ss.getRange(col).activate();
kyou.clear();
}
スプレッドシートを開くと、上のような感じで今日の日付の列を選択してくれます。
追記:1年間分の日付から当日列へジャンプするコード
横並びで1年間分の日付があった場合に、シート開いたら当日列へジャンプするコード作成しました。
/*シート開いたら今日の日付列を選択(日付横並びVer)*/
function onOpen(){
var ss = SpreadsheetApp.getActive();
var sht = ss.getSheetByName('横並び').activate();
ss.getRange('B1').activate();
//列数ゲッツ
var kyou = ss.getCurrentCell().setFormula('=MATCH(TODAY(),2:2,0)');
ss.getActiveRangeList().setNumberFormat('@');
var day = ss.getCurrentCell().getValue();
//当日セルの上に移動
var move = sht.getRange(2,day).offset(-1,0).activate();
//アルファベットゲッツ
var rng = ss.getCurrentCell().setFormula('=SUBSTITUTE(ADDRESS(ROW(),COLUMN(),4),ROW(),"")');
var val = rng.getValue();
//当日の列を選択
var col = val+':'+val;
ss.getRange(col).activate();
rng.clear();
kyou.clear();
}
たとえ365列あっても、スプレッドシートを開けばすぐに当日の列に移動してくれます。
追記2:ジャンプ先の当日列を画面左に表示するコード
1年間分の日付が横並びで表示されている場合、当日列が画面右側に表示されてしまいます。そこで、選択される当日列が自動で画面左寄りに表示されるコードを作成しました。
/*シート開いたら今日の日付列を選択(日付横並びVer)*/
function onOpen(){
var ss = SpreadsheetApp.getActive();
var sht = ss.getSheetByName('横並び').activate();
ss.getRange('B1').activate();
//列数ゲッツ
var kyou = ss.getCurrentCell().setFormula('=MATCH(TODAY(),2:2,0)');
ss.getActiveRangeList().setNumberFormat('@');
var day = ss.getCurrentCell().getValue();
//当日セルの上に移動
var move = sht.getRange(2,day).offset(-1,0).activate();
//当日セルのアルファベットゲッツ
var rng = ss.getCurrentCell().setFormula('=SUBSTITUTE(ADDRESS(ROW(),COLUMN(),4),ROW(),"")');
var val = rng.getValue();
//当日列を選択
var col = val+':'+val;
ss.getRange(col).activate();
rng.clear();
kyou.clear();
//当日セルの-2日前列まで非表示に
var day2 = day-2;
var sheet = ss.getActiveSheet();
sheet.hideColumns(1,day2);
}
以下のような感じで、当日列が画面左寄りに表示されます。

列選択のソースをコピペするときの注意点
もしコピペで使うときは、以下項目に注意してご利用ください。
日付が横並びのときに利用できます↓
match関数入れてるのでB1セルは、何もしないでネ。(編集できるなら大丈夫っす)
シート名を「横並び」にしてるので、任意で分かりやすい名前に変更してください。
スクリプト内の、
var sht = ss.getSheetByName('横並び').activate();
箇所も同じシート名に変更してください。
あとは、function onOpen()
の箇所を任意の関数名に変更しても使えます。(ただし、シート開いたら自動で列を選択してくれなくなりますん)
シート開いたら今日の日付の行を選択するやつ
日付を縦並びで配置しているとき、スプレッドシート開くと今日の日付の行を選択してくれるスクリプトです。
/*シート開いたら今日の日付行を取得(日付縦並びVer)*/
function onOpen() {
var ss = SpreadsheetApp.getActive();
var sht = ss.getSheetByName('縦並び').activate();
ss.getRange('B1').activate();
var kyou = ss.getCurrentCell().setFormula('=MATCH(TODAY(),A:A,0)');
ss.getActiveRangeList().setNumberFormat('0');
var day = ss.getCurrentCell().getValue();
//今日の日付のセルに移動
var cell = 'A' + day;
ss.getRange(cell).activate();
//今日の日付の行を選択
var row = day+':'+day;
ss.getRange(row).activate();
kyou.clear();
}
スプレッドシートを開くと、上のような感じで今日の日付行を選択してくれます。
行選択のソースをコピペするときの注意点
列選択と同様にコピペ時の注意点を書いておきます。
日付が縦並びのときに使えます↓
B1セルには何もいれないでネ。
シート名を「縦並び」にしてるので、任意の名前に変更してご利用くださいませ。
スクリプト内の、
var sht = ss.getSheetByName('縦並び').activate();
箇所も同じシート名に変更してください。先述の注意点と同様に、function onOpen()
の箇所を任意の関数名に変更しても使えます。(ただし、シート開いたら自動で行の選択してくれなくなります)
まとめ
列の選択の部分でsliceメソッドを使ったのが、今回の工夫したとこでした。
- 日付が縦並びなら行を選択
- 日付が横並びなら列を選択
といった感じで、使ってもらえればうれしいです。
アクティブセルにsetFomulaでMATCH関数入れた処理なんで、もっといろいろと単純化が出来そうっすね^^
