LANG SELRCT

コードを書く場所

2019年6月30日日曜日

指定した期間の日付と曜日をスプレッドシートの1,2行目に書き出したい


指定した期間の日付をスプレッドシートの一行目に書き出したい
では日付だけを出力しましtが、

ここでは曜日も SUN, MON, TUE, WED, THU, FRI, SAT などで出力します。




コード.gs
/************************************
startからendの日付と曜日をss_urlの先頭シートに入力する
************************************/
function run() {
  var start = "2019/01/01";// この日から
  var end = "2019/12/31";// この日までの日付を
  var ss_url = 'https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit#gid=0';// このスプレッドシートに書き出す
  
  var ss = SpreadsheetApp.openByUrl(ss_url);
  var sheet = ss.getSheets()[0];

  set_dates(sheet, start, end);// カレンダーを入力する
  set_line_heading(sheet);// 行見出しを入力する
  set_alignment(sheet);// セル内を中央寄せにする
}

/************************************
日付と曜日を入力する
************************************/
function set_dates(sheet, start, end) {
  var dates = get_dates(start, end);
  var start_row = 1;
  var start_col = 2;
  set_values(sheet, dates, start_row, start_col);
}

/************************************
startからendの日付と曜日を取得して返す
************************************/
function get_dates(start, end){
  var start_date = new Date(start);
  var end_date = new Date(end);
  var days = (end_date - start_date) / 1000 / 60 / 60 / 24;// 日数の差を出す
  var dates = get_each_days(start_date, days);
  return dates;
}

/************************************
日付と曜日を取得して返す
************************************/
function get_each_days(start_date, days) {
  var arrays = [];
  var day_nums = [];
  var dates = [];
  for(var i = 0; i < (days + 1); i++) {// daysのままだと一日足りない
    var year_now = start_date.getFullYear();
    var month_now = start_date.getMonth();
    var date_now = start_date.getDate();
    var new_date = new Date(year_now, month_now, date_now + i);
    var day_num = new_date.getDay();
    day_num = get_days(day_num);
    var date = Utilities.formatDate(new_date, 'Asia/Tokyo', 'yyyy/MM/dd');
    dates.push(date);
    day_nums.push(day_num);
  }
  arrays.push(dates,day_nums);
  return arrays;
}

/************************************
行見出しを入力する
************************************/
function set_line_heading(sheet) {
  var line_heading = [['DATE'], ['DAY']];
  var start_col = 1;
  var start_row = 1;
  set_values(sheet, line_heading, start_row, start_col);
}

/************************************
曜日を入れる
************************************/
function get_days(day_num) {
  var SEVEN_DAYS = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'];
  var days = SEVEN_DAYS[day_num];
  return days;
}

/************************************
水平方向の配置を決める
************************************/
function set_alignment(sheet) {
  var range = sheet.getRange('1:2');
  range.setHorizontalAlignment('center');
}

/************************************
シートにカレンダーを入力する
************************************/
function set_values(sheet, array, start_row, start_col){
  var last_row = sheet.getLastRow();
  var num_rows = array.length;
  var num_cols = array[0].length;
  var range = sheet.getRange(start_row, start_col, num_rows, num_cols);
  range.setValues(array); 
}



関連記事

指定した期間の日付をスプレッドシートの一行目に書き出したい