前回は、アクティブセルに記載されている日付から、曜日番号を取得し、更に曜日を特定し隣のセルに記載。。。
まで行いました。
まだの方は、まずこちらから御覧ください。
それでは、今回は、『特定のセル(予め指定したセル)の日付 』から、
曜日番号を取得
⇒曜日を特定
⇒それを特定のセルの隣セルに記載
までやってみます。
目次
今回の目標
⇒実行(Ctrl+R)。。。
下記の様な表示 ↓↓↓↓
実現のスクリプトと解説
下記をコンテナバインドスクリプトのスクリプトエディターにコピペして、
保存(Ctrl+S)
⇒スクリプトを実行(Ctrl+R)。。。
【前提】コンテナバインドスクリプトで作成しています。
//ファンクション名を「dayOfWeek3」にする(ちなみに、dayOfWeek2は前回使用したので、dayOfWeek3にしましたが、dayOfWeek3の部分は、何でも良いです)
function dayOfWeek3(){
//スプレッドシートの「アクティブなスプレッドシート全体」を取得し、それを「ss」に代入
var ss = SpreadsheetApp.getActiveSpreadsheet();
//「ss(アクティブなスプレッドシート全体)」の「アクティブなシートだけ」を「sheet」に代入
var sheet = ss.getActiveSheet();
//D2(指定するセルの範囲)を取得し、activeCellに代入
var activeCell = sheet.getRange("D2");
//曜日を表す文字列を持った配列を「allDayOfWeek」に代入)
var allDayOfWeek = ['日', '月', '火', '水', '木', '金', '土'];
//日付情報を扱うDateクラスを用いて「activeCell(A1のセル)」に記載されている日付を取得し、その日付から曜日(曜日番号)を取得し、その曜日(曜日番号)を「dayNum」に代入
var dayNum = new Date(activeCell.getValue()).getDay();
//「activeCell(A1のセル)」の場所から「0」=現状の行で、「1」=1つ隣のセルに、「dayNum(曜日番号)」を入れなさい。
activeCell.offset(0, 1).setValue(allDayOfWeek[dayNum]+'曜日');
}
どうでしょうか?スプレッドシートに「○曜日」が表示されましたでしょうか?
まとめ
今回のスクリプトでは、
//「sheet(アクティブなシート)」の「現在選択している(カーソルがあっている)セル」を「activeCell」に代入
var activeCell = sheet.getActiveCell();
を、下記に変更して指定したセルの範囲に変えました。
//D2(指定するセルの範囲)という範囲をactiveCellに代入
var activeCell = sheet.getRange("D2");
こうすることで、アクティブセルの日付⇒指定した範囲(今回は1セルですが)の日付を指定することができるようになりました。
今回、セルの指定に”D2″という指定を行いましたが、ここは、
var activeCell = sheet.getRange(2,4);
としても、”D2″を指定したことになるのです。
行数・列数を指定したgetRangeメソッドの使い方
スプレッドシートで指定した範囲を取得するには、”D2″とか、ダイレクトに入れてしまう事も可能ですが、
Sheetオブジェクト.getRange(行番号, 列番号, 行数, 列数)
という形で指定ができるので、今回の場合は、2行目のD列ですから
行番号:2
列番号:4
となります。
※「行数」「列数」は、範囲が複数に跨った場合に使用しますので、無しでも大丈夫です。
※もっと詳しい指定の方法は、別途まとめるようにいたします。
では次は、並んでいる全ての日付の横にに曜日が入るようにしてみましょう。