求助:Google Apps Script实现D列修改时A列计数与B列时间戳(多工作表适配)
解决Google Sheets多工作表D列修改时A列计数+B列时间戳问题
核心需求回顾
当D列(日期列)被修改时:
- B列自动添加时间戳(当前已正常运行,脚本可兼容原有逻辑)
- A列记录对应单元格的修改次数,且功能适配所有月份命名的工作表
解决方案:Google Apps Script 实现
替换原有脚本(或新增)以下代码,实现多工作表适配的计数功能:
function onEdit(e) { const editedRange = e.range; const activeSheet = editedRange.getSheet(); // 仅触发D列(第4列)修改,且工作表为月份命名(如"1月""2月",可根据实际命名规则调整正则) if (editedRange.getColumn() !== 4 || !/^\d+月$/.test(activeSheet.getName())) return; const targetRow = editedRange.getRow(); const timestampCell = activeSheet.getRange(targetRow, 2); // B列时间戳单元格 const countCell = activeSheet.getRange(targetRow, 1); // A列计数单元格 // 保留B列时间戳逻辑(若原有逻辑需保留,可替换此段) if (!timestampCell.getValue()) { timestampCell.setValue(new Date()); } // 更新A列修改次数:空值设为1,已有值则+1 const currentCount = countCell.getValue(); countCell.setValue(currentCount ? currentCount + 1 : 1); }
部署步骤
- 打开目标Google表格,点击顶部菜单栏「扩展程序」→「Apps脚本」
- 删除编辑器内的默认代码,粘贴上述脚本
- 点击「保存」,给项目命名(如
TimestampAndCounter) - 关闭脚本编辑器,回到表格修改D列即可测试功能
关键调整说明
- 多工作表适配:通过正则表达式
/^\d+月$/匹配月份命名的工作表,若你的月份表是英文命名(如January),可将正则改为/^(January|February|March|April|May|June|July|August|September|October|November|December)$/;若需适配所有工作表,直接删除|| !/^\d+月$/.test(activeSheet.getName())这段判断 - 计数逻辑修复:直接读取A列当前值,空值初始化1,非空则累加,避免原有逻辑的计数错误
- 时间戳兼容:保留原有“首次修改添加时间戳”的逻辑,若需要每次修改都更新时间戳,删除
if (!timestampCell.getValue())判断,直接设置timestampCell.setValue(new Date())
内容的提问来源于stack exchange,提问作者Sarah Nicole
相关产品推荐
相关产品推荐

