如何为复制的单元格时间戳增加5小时后粘贴至目标单元格?
修改后的脚本
function fill() { const tss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = tss.getSheetByName("data"); const values = sheet.getRange("C:C").getValues(); for (let i = 0; i < values.length; i++) { const value = values[i][0]; if (value === "") { const rangeA = sheet.getRange(i + 1, 2); const rangeB = sheet.getRange(i + 1, 3); if (!rangeA.isBlank()) { // 获取原时间并转换为毫秒数,加上5小时对应的毫秒值 const originalTime = rangeA.getValue(); const newTime = new Date(originalTime.getTime() + 5 * 60 * 60 * 1000); // 设置目标单元格的日期格式并写入新时间 rangeB.setNumberFormat("dd.MM.yyyy HH:mm:ss"); rangeB.setValue(newTime); } } } }
关键修改说明
- 用JavaScript Date对象的毫秒数计算来处理时间增量,避免Google Sheets数值存储时间可能带来的精度问题
- 通过
setNumberFormat("dd.MM.yyyy HH:mm:ss")强制指定输出格式,确保结果完全符合31.01.2024 13:02:34的要求 - 修正了原代码中
rangeB定义里的无效字符+'0,125',修复了范围定义错误 - 替换
var为const/let,提升代码的作用域安全性
内容的提问来源于stack exchange,提问作者John Kater
相关产品推荐
相关产品推荐

