簡體   English   中英

通過 Google App Script / Javascript 從電子表格中添加 1 天 - 月份保持重置為當前月份

[英]Add 1 day to date from spreadsheet via Google App Script / Javascript- Month Keeps Reseting to current month

我正在嘗試設置一個谷歌應用程序腳本 function 從價差的最后一列中獲取日期(格式為 dd/mm/yy),並創建一個包含日期 + 一天的新列。

我已經看過以前的解決方案並嘗試使用相同的解決方案,即newDate.setDate(lastDate.getDate()+1)但在腳本中正確格式化值時遇到了問題。 這是我的代碼的一個變體,我用它來循環一年的值,看看我得到了什么:

for (var i=0;i<365;i++){

    var lastRow = outputSheet.getLastRow();
    var newDate = new Date();

    var lastDate = outputSheet.getRange(lastRow,1).getValue();
    var newDateRng = outputSheet.getRange(lastRow+1,1);
    Logger.log(lastDate + 1, typeof lastDate, typeof (lastDate + 1));
    newDate.setDate(lastDate.getDate());
    Logger.log(newDate);
    newDate.setDate((newDate.getDate() + 1));
    Logger.log(newDate);
    var newDateFormatted = Utilities.formatDate(newDate, ss.getSpreadsheetTimeZone(), "dd/MM/YY");
    Logger.log(newDateFormatted);
    newDateRng.setValue(newDateFormatted);
}

開始日期為“01/03/2020”,我得到以下行為:

2020 年 1 月 3 日

2020 年 2 月 5 日

2020 年 3 月 5 日

...

2020 年 5 月 31 日

2020 年 1 月 6 日

2020 年 2 月 5 日

2020 年 3 月 5 日

...

2020 年 5 月 31 日

2020 年 1 月 6 日

2020 年 2 月 5 日

...

等。一直到一年。 雖然天數增加了,但該月似乎在該月的第一天之后重置。

作為說明,我特別希望從電子表格中選擇日期,而不是將新日期用作今天,將新日期 +1 用作明天。

謝謝

您需要在循環中使用不同的變量,否則您將始終返回同一個月。

還要避免使用字符串作為結果,保留日期對象並正確顯示。

代碼如下:

function otherTest(){
  var lastDate = SpreadsheetApp.getActiveSheet().getActiveCell().getValue();
  var date = new Date(lastDate); // create new date object
  var result = [];
  for (var i=0;i<365;i++){
    date=new Date(date).setDate(new Date(date).getDate()+1)
    Logger.log('date='+new Date(date))
    result.push([new Date(date)]);
  } 
  SpreadsheetApp.getActiveSheet().getRange(1,2,result.length,1).setValues(result).setNumberFormat('dd/MM/yyyy');
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM