【営業でも分かる!】指定した列の日付(複数)から曜日取得し、横の列のセルに記載する方法

前回は、指定したセルに記載されている日付から、曜日番号を取得し、更に曜日に変換し、隣のセルに記載。。。
まで行いました。

まだの方は、まずこちらから御覧ください。

今回は、『指定した列にある日付』から、各曜日番号を取得
⇒各曜日に変換
⇒それを横の列のセルに記載
までやってみます。

目次

今回の目標

スクリプト実行前

⇒実行(Ctrl+R)。。。
下記の様な表示 ↓↓↓↓

スクリプト実行後

実現のスクリプトと解説

下記をコンテナバインドスクリプトのスクリプトエディターにコピペして、
保存(Ctrl+S)
⇒スクリプトを実行(Ctrl+R)。。。

【前提】コンテナバインドスクリプトで作成しています。

//ファンクション名を「dayOfWeek4」にする(dayOfWeek4の部分は、何でも良いです)
function dayOfWeek4(){

 //スプレッドシートの「アクティブなスプレッドシート全体」を取得し、それを「ss」に代入
 var ss = SpreadsheetApp.getActiveSpreadsheet();

 //「ss(アクティブなスプレッドシート全体)」の「アクティブなシートだけ」を「sheet」に代入
 var sheet = ss.getActiveSheet();

 //「sheet(アクティブなシート)」のコンテンツ最後行の位置を「lastRow」に代入
  const lastRow = sheet.getLastRow();

 //for文を使って、2行目から「lastRow(最終行の位置)」まで繰り返す処理を行う
  for(let i = 2; i <= lastRow; i++) {

    //「i」行目で4列目(D列)を取得し、activeCellに代入
    var activeCell = sheet.getRange(i,4);

   //曜日を表す文字列を持った配列を「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]+'曜日');

  }
}

どうでしょうか?スプレッドシートのE列に「○曜日」が表示されましたでしょうか?

まとめ

今回のスクリプトで重要なのは、もちろん

 //「sheet(アクティブなシート)」のコンテンツ最後行の位置を「lastRow」に代入
  const lastRow = sheet.getLastRow();

と、

 //for文を使って、2行目から「lastRow(最終行の位置)」まで繰り返す処理を行う
  for(let i = 2; i <= lastRow; i++) {

    //「i」行目で4列目(D列)を取得し、activeCellに代入
    var activeCell = sheet.getRange(i,4);

ですね。

getLastRow()について

本当に良く出てくるスクリプトですので、ご存知の方も多いと思いますが「getLastRow()」は、スプレッドシートの最終行を取得するスクリプトです。今回は、8行目までコンテンツ(文字・内容)が入っているので「8」が「lastRow」に代入されるイメージです。

今回のfor文の使い方

行や列で、繰り返して処理をしたいときに、よく使われるfor文ですが、今回は、列はD列(4行目)で変わらないので、変化するのは行だけです。ですので、行の箇所に変数「i」を入れて、繰り返し処理を行っていけるようにします。

まず「i」に値を繰り返し入れるためのfor文を書いてみましょう。

for(let i = 2; i <= lastRow; i++) {

まず指定するセルは、2行目から始まりますので「i」=2から始まり、「lastRow(最終行の位置。今回は8行目)」までという指定を行い、「i++」で「i」に1ずつ足して繰り返し処理を行う、、、という意味になります。

※for文の詳しい説明は別ページに改めます。

では次は、スプレッドシートに記載されたスケジュールを一斉にGoogleカレンダーに反映してみます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA