このように一行目に指定した期間の日付を入れたい
例として2019/01/01から2019/12/31までの日付を入れるコードを書きました。
start と end とss_url を各自設定して set_dates() を実行すると
設定した期間の日付が設定したシートのいち行目に書き出されます。
コード.gs
function set_dates() { var start = "2019/01/01";// この日から var end = "2019/12/31";// この日までの日付を var ss_url = 'https://docs.google.com/spreadsheets/d/スプレッドシートID/edit#gid=0';// このスプレッドシートに書き出す var dates = [get_dates(start, end)]; var ss = SpreadsheetApp.openByUrl(ss_url); var sheet = ss.getSheets()[0]; set_values(sheet, dates); } 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 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 = new_date.getDay(); var date = Utilities.formatDate(new_date, 'Asia/Tokyo', 'yyyy/MM/dd'); dates.push(date); } return dates; } function set_values(sheet, array){ var last_row = sheet.getLastRow(); var start_row = last_row + 1; var start_col = 1; 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); } |
関連記事
指定した期間の営業日を出す(平日・土・日・祝日をそれぞれ分ける)
setValuesを使う話