我正在编写一个脚本,在该脚本中我试图使用数组和映射方法将 numdays 添加到谷歌表格中的数组中。下图是数据示例function new_date() {var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();var lastRow = ss.getMaxRows(); var data = ss.getRange(2, 5, lastRow).getValues(); // Logger.log(data)var newData = data.map(adding_days);ss.getRange(2, 5, lastRow).setValues(newData); }function adding_days(row){ var millis_per_day = 1000 * 60 * 60 * 24; var days = 7 ; var date = new Date(row[0]); var date2 = Utilities.formatDate(date, "GMT+05:30" , "MM-dd-yyyy"); var numdays = days * millis_per_day return [ date2 + numdays ]; }当我运行代码时,它只以另一种格式再次返回数据,我不明白为什么它不能将 numdays 添加到数据中。我是在应用程序脚本中使用数组的新手,所以我对这里出了什么问题感到非常困惑。提前致谢!
1 回答
翻翻过去那场雪
TA贡献2065条经验 获得超14个赞
将年、月、日、小时、分钟、秒和毫秒添加到日期
在这种特殊情况下,天数:
function new_date() {
const ss=SpreadsheetApp.getActive()
const sh=ss.getActiveSheet();
const v=sh.getRange(2,5,sh.getLastRow()-1,1).getValues();
const ndt=v.map(function(r,i){
let dt=new Date(r[0]);
let days=7;
return [new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()+days,dt.getHours(),dt.getMinutes(),dt.getMilliseconds())];
});
sh.getRange(2,5,ndt.length,ndt[0].length).setValues(ndt);
}
以毫秒为单位添加日期值的问题在于它确实补偿了闰年等特殊情况。虽然这需要很长的一行,但它现在允许您通过简单的整数数学将天数和小时数等直接添加到日期,方法是将其添加到日期构造函数的适当部分。
添加回答
举报
0/150
提交
取消