如何修改Google Sheets脚本为时间戳添加2天?
问题解决:为时间戳增加2天
你的错误原因
new Date()+2的写法无效,是因为对Date对象执行加法时,JavaScript会自动将其转为毫秒级时间戳(从1970年1月1日至今的毫秒数),加2只是给这个数值加了2毫秒,完全达不到“加2天”的效果。
两种正确实现方式
你可以通过以下两种方法实现“当前日期加2天”:
- 毫秒数计算法
先获取当前时间的毫秒数,加上2天对应的毫秒数(2天 = 2×24×60×60×1000 = 172800000毫秒),再转回Date对象:
new Date(new Date().getTime() + 2*24*60*60*1000)
- Date对象方法(更直观)
直接调用setDate方法修改日期值:
const futureDate = new Date(); futureDate.setDate(futureDate.getDate() + 2);
修改后的完整脚本
这里用第二种方法更新你的代码,同时优化了重复的SpreadsheetApp.getActiveSpreadsheet()调用:
function Cal1 () { const ss = SpreadsheetApp.getActiveSpreadsheet(); const s = ss.getActiveSheet(); const r = ss.getActiveRange(); if(s.getName() === "Pipe" && r.getColumn() === 12 && r.getValue() === "2") { const row = r.getRow(); const numColumns = s.getLastColumn(); const targetSheet = ss.getSheetByName("Called"); const target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); s.getRange(row, 2, 1, numColumns).moveTo(target); // 生成当前日期加2天的时间戳 const futureDate = new Date(); futureDate.setDate(futureDate.getDate() + 2); target.offset(0, numColumns).setValue(futureDate); s.clearContent(row); } }
额外说明
- 用
===代替==是更严谨的相等判断,避免隐式类型转换问题。 - 如果需要只保留日期(不带时间),可以在设置值前添加:
futureDate.setHours(0, 0, 0, 0);
内容的提问来源于stack exchange,提问作者Eri Mora
相关产品推荐
相关产品推荐

