指定した期間の日付をスプレッドシートの一行目に書き出したい
では日付だけを出力しまし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);
}
|
関連記事
指定した期間の日付をスプレッドシートの一行目に書き出したい









































