LANG SELRCT

コードを書く場所

2019年6月24日月曜日

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


このように一行目に指定した期間の日付を入れたい


例として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を使う話