如何在编辑指定列时在对应列添加仅含时间的Timestamp?
实现指定列编辑时生成对应列时间戳
你需要在代码中判断编辑的目标列,仅当编辑A列(列号1)或D列(列号4)时,才在对应列生成仅含时间的时间戳。修改后的代码如下:
/** @OnlyCurrentDoc */ function onEdit(e) { const activeSheet = e.source.getActiveSheet(); const editedColumn = e.range.columnStart; // 定义触发列与目标列的对应关系:键是触发列号,值是目标列号 const columnMapping = { 1: 2, // 编辑A列时,给B列加时间戳 4: 5 // 编辑D列时,给E列加时间戳 }; // 仅当编辑的列在映射列表中时,执行时间戳写入 if (columnMapping[editedColumn]) { const targetColumn = columnMapping[editedColumn]; activeSheet.getRange(e.range.rowStart, targetColumn) .setValue(new Date()) .setNumberFormat("HH:mm:ss am/pm"); // 仅显示时间,可按需调整格式 } }
关键说明:
- 通过
e.range.columnStart获取当前编辑单元格的列号(A列对应1,D列对应4) columnMapping对象清晰定义了触发列和目标列的对应关系,后续如需扩展其他列只需添加新的键值对- 只有编辑指定列时才会触发时间戳写入,避免无关编辑干扰
setNumberFormat设置为仅时间格式,你可以根据需求调整为"h:mm am/pm"(12小时制不带秒)或"HH:mm"(24小时制)等格式
内容的提问来源于stack exchange,提问作者Arvie Fajarito
相关产品推荐
相关产品推荐

