LANG SELRCT

コードを書く場所についてはこちら

2017年11月23日木曜日

指定した日付けの週初と週末を取得する


今週の日曜日と土曜日の日付けを

11/19 - 11/25

の形で取得しようとした時に書いたコードです




コード.gs
function week_start_and_end() {
  var today = new Date();
  var this_year = today.getYear();
  var this_month = today.getMonth();
  var date = today.getDate();
  var day_num = today.getDay();
  var this_sunday = date - day_num;
  var this_saturday = this_sunday + 6;
  var start_date = new Date(this_year, this_month, this_sunday);
  start_date = format_date(start_date);
  var end_date = new Date(this_year, this_month, this_saturday);
  end_date = format_date(end_date);
  var target_week = start_date + " - " + end_date;
  Logger.log(target_week);
}

function format_date(date){
  return Utilities.formatDate(date, 'Asia/Tokyo', 'MM/dd');
}
意訳.gs
この処理は以下を実行する
現在日時を取得
年を取得
月を取得
日付けを取得
曜日の番号を取得→ 0 は日曜日で 1は月曜日~ 6 は土曜日
今日の日付から今日の曜日番号を引いて今週の日曜日の日付を取得
今週の日曜日に6を足して今週の土曜日の日付を取得
今週の日曜日をnew Date(年, 月, 日)にしてから
MM/ddの形式にする
今週の土曜日をnew Date(年, 月, 日)にしてから
MM/ddの形式にする
今週の日曜日 - 今週の土曜日の形にして
ログに出す


この処理は以下を実行する
渡されたdateをMM/ddの形にフォーマットして返す




var today = new Date("2017/11/1");
などとすると指定した日付けの週初と週末を取得できます


Utilities.formatDate(date, 'Asia/Tokyo', 'MM/dd')
はGoogle Apps Scriptのmethodです



参考
https://developers.google.com/apps-script/reference/utilities/utilities#formatDate(Date,String,String)