Google Sheets脚本:自动添加日期后公式计算日期差异常求助
问题解决方法
你的问题出在直接将Range对象拼接到公式字符串里,Range对象转成字符串后会显示"Range",而非单元格的引用地址。只需修改公式拼接的部分,同时优化日期的写入方式确保计算正常:
修改后的代码
if(e.range.columnStart === 1 && e.range.rowStart >= 2) { const currentDate = new Date(); const dateCell = e.range.offset(0,9); // 设置单元格为日期格式,写入原生日期对象确保可计算 dateCell.setNumberFormat("MM/dd/yyyy"); dateCell.setValue(currentDate); const daysSince = e.range.offset(0,10); // 用getA1Notation()获取单元格的A1格式引用(如J2) daysSince.setFormula(`=TODAY()-${dateCell.getA1Notation()}`); }
关键修改点
- 获取正确的单元格引用:使用
dateCell.getA1Notation()替代直接拼接Range对象,该方法会返回单元格的A1格式地址(比如J2),让公式能正确指向目标单元格。 - 优化日期写入方式:原代码写入的是格式化后的字符串,可能导致单元格变为文本类型影响计算。改为写入原生Date对象并设置单元格日期格式,确保单元格存储的是可计算的日期值。
内容的提问来源于stack exchange,提问作者user25065873
相关产品推荐
相关产品推荐

