如何使Google Sheet脚本中两个标签页的编辑时间戳功能均生效?
解决Google Sheets多标签页时间戳失效问题
你的问题核心是嵌套的内部函数未被调用:原脚本里onEdit1和onEdit2被定义在onEdit函数内部,但你没有在主函数里执行它们,导致In Log标签页的时间戳逻辑完全没运行。
下面是修正后的脚本,去掉冗余嵌套,直接在主onEdit函数里处理两个标签页的逻辑:
function onEdit(e) { // 通过事件对象获取工作表和编辑单元格,比主动获取更可靠 const sheet = e.source.getActiveSheet(); const editedCell = e.range; // 只处理A列(第1列)的编辑操作 if (editedCell.getColumn() !== 1) return; // 根据标签页名称分配不同的偏移列 switch(sheet.getName()) { case "In Log": const inLogTarget = editedCell.offset(0, 4); if (inLogTarget.getValue() === '') { inLogTarget.setValue(new Date()); } break; case "Sales": const salesTarget = editedCell.offset(0, 5); if (salesTarget.getValue() === '') { salesTarget.setValue(new Date()); } break; // 其他标签页不触发时间戳逻辑 default: return; } }
修改要点:
- 移除了嵌套的
onEdit1、onEdit2函数,直接在主onEdit内执行逻辑,避免函数定义后未调用的问题 - 使用
e事件对象获取上下文,比getActiveSheet()更适配Google Sheets的触发机制 - 先判断编辑列是否为A列,不符合直接返回,减少无效判断
- 用
switch语句替代多分支if,逻辑结构更清晰
替换原脚本后,保存并测试:编辑In Log或Sales标签页的A列单元格,对应偏移列会自动填充时间戳(仅当目标单元格为空时)。
内容的提问来源于stack exchange,提问作者CarrymesenpaiUwU
相关产品推荐
相关产品推荐

