前回は、アクティブセルに記載されている日付から、曜日番号を取得し、隣のセルに記載。。。
まで行いました。
まだの方は、まずこちらから御覧ください。
それでは、今回は、曜日番号から、実際に曜日にして、それをアクティブなセルの右隣に記入できるようにしてみます。
目次
今回の目標
スプレッドシートに記載している日付をクリック(セルが選択された状態)してから、
⇒実行(Ctrl+R)。。。
下記の様な表示 ↓↓↓↓
実現のスクリプトと解説
下記をコンテナバインドスクリプトのスクリプトエディターにコピペして、保存(Ctrl+S)⇒
スプレッドシートに記載している日付をクリック(セルが選択された状態)してから⇒
スクリプトを実行(Ctrl+R)。。。
【前提】コンテナバインドスクリプトで作成しています。
//ファンクション名を「dayOfWeek2」にする(ちなみに、dayOfWeek2の部分は、何でも良いです)
function dayOfWeek2(){
//スプレッドシートの「アクティブなスプレッドシート全体」を取得し、それを「ss」に代入
var ss = SpreadsheetApp.getActiveSpreadsheet();
//「ss(アクティブなスプレッドシート全体)」の「アクティブなシートだけ」を「sheet」に代入
var sheet = ss.getActiveSheet();
//「sheet(アクティブなシート)」の「現在選択している(カーソルがあっている)セル」を「activeCell」に代入
var activeCell = sheet.getActiveCell();
//曜日を表す文字列を持った配列を「allDayOfWeek」に代入)
var allDayOfWeek = ['日', '月', '火', '水', '木', '金', '土'];
//日付情報を扱うDateクラスを用いて「activeCell(現在選択している(カーソルがあっている)セル)」に記載されている日付を取得し、その日付から曜日(曜日番号)を取得し、その曜日(曜日番号)を「dayNum」に代入
var dayNum = new Date(activeCell.getValue()).getDay();
//「activeCell(現在選択している(カーソルがあっている)セル)」の場所から「0」=現状の行で、「1」=1つ隣のセルに、「dayNum(曜日番号)」を入れなさい。
activeCell.offset(0, 1).setValue(allDayOfWeek[dayNum]+'曜日');
}
どうでしょうか?スプレッドシートに「○曜日」が表示されましたでしょうか?
まとめ
今回のスクリプトの中で
//「activeCell(現在選択している(カーソルがあっている)セル)」の場所から「0」=現状の行で、「1」=1つ隣のセルに、「dayNum(曜日番号)」を「曜日」を追加して入れなさい。
activeCell.offset(0, 1).setValue(allDayOfWeek[dayNum]+'曜日');
も前回同様に重要ですが、一番重要なのは、
//曜日を表す文字列を持った配列を「allDayOfWeek」に代入)
var allDayOfWeek = ['日', '月', '火', '水', '木', '金', '土'];
という配列を事前に作成しておいて、『allDayOfWeek[dayNum]』という形で配列のインデックスを指定してあげているところです。
※配列のインデックスは 0 から始まります。
var arr = ["松", "竹", "梅"];
console.log(arr); // => ["松", "竹", "梅"]
console.log(arr[0]); // => "松"
console.log(arr[1]); // => "竹"
console.log(arr[2]); // => "梅"
以前は、new Array() を使用していましたが、今ではあまり使用されていないようです。
※Arrayオブジェクトは配列を扱うオブジェクトです。
以下のようにnew演算子でインスタンスを作成することも可能です。
var allDayOfWeek = new Array(‘日’, ‘月’, ‘火’, ‘水’, ‘木’, ‘金’, ‘土’);
ですので、上記でも同じことは可能です。
では、次は、固定セルの曜日が表示できるようにしてみます。