求助:Google Apps Script实现H列选"Won"时自动填充W列日期
谷歌表格自动记录决策日期解决方案
常见失败原因
- 未准确判断编辑的是H列(Award Status列)
- 单元格值匹配逻辑错误(比如大小写不匹配、空格问题)
- 未限定仅当值变为"Won"时触发更新
- 误用需要授权的API导致简单触发器失效
正确的onEdit脚本代码
function onEdit(e) { // 获取编辑事件的相关对象 const range = e.range; const sheet = range.getSheet(); const editedValue = e.value; const row = range.getRow(); const col = range.getColumn(); // 仅处理H列(第8列)且值改为"Won"的情况,跳过表头行(假设表头在第1行) if (col === 8 && editedValue === "Won" && row > 1) { // 定位到对应行的W列(第23列) const targetCell = sheet.getRange(row, 23); // 设置当前日期,若需要特定格式可改用Utilities.formatDate targetCell.setValue(new Date()); // 可选:锁定日期单元格防止误编辑 targetCell.protect().setDescription("自动记录的决策日期,不可编辑"); } }
关键说明
- 简单触发器
onEdit无需手动授权,只要函数名正确就能自动触发 - 代码里跳过了第1行(表头),如果你的表头不在第1行,自行修改
row > 1的判断条件 - 若需要日期格式统一,可替换
setValue(new Date())为:const formattedDate = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "yyyy-MM-dd"); targetCell.setValue(formattedDate); - 确保编辑的H列下拉值是精确的"Won"(大小写、空格完全一致),否则匹配会失败
内容的提问来源于stack exchange,提问作者Alekhya S
相关产品推荐
相关产品推荐

