[英]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.