このように一行目に指定した期間の日付を入れたい
例として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を使う話