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