function onEdit(e) {
Browser.msgBox(e.changeType);
if (e.changeType == 'EDIT') {
...
}
}
当工作表单元格从空更改为数字时,该事件成功触发,但 msgBox 输出显示“未定义”。
e.changeType 不应该包含“EDIT”吗?
我正在使用此参考:https://developers.google.com/apps-script/understanding_events
您参考的文档不涉及简单的onEdit触发器,它与可安装的onChange触发器一起工作,这是完全不同的。
您应该将函数重命名为您想要的任何名称(但不是“onEdit”),并从脚本编辑器菜单/资源/当前项目触发器/添加 onchange 触发器
然后,如果您想知道事件信息中返回什么值,您可以使用如下代码:
function testonChange(e) {
Browser.msgBox(Utilities.jsonStringify(e));
}
您将清楚地看到该事件是如何被考虑的。
截至 2024 年 9 月 3 日,至少根据我的测试,事件 安装程序触发器 不再起作用:
function onEditValidations(e) {
Logger.log(`e = ${JSON.stringify(e)}`);
Logger.log(`e.changeType = ${e.changeType}`);
if (e.range.getRow() == 1 || !e.oldValue) {
return;
}
}
更改格式时e
的输出:
e = {"authMode":"FULL",
"range":{"columnEnd":8,"columnStart":8,"rowEnd":2,"rowStart":2},
"source":{},
"triggerUid":"123456",
"user":{"email":"[email protected]","nickname":"someone"}}
请注意,尽管使用了安装程序触发器,但 e.changeType
甚至不存在。因此,对于我的情况,为了检测仅数据更改,我检查
e.oldValue
是否存在。希望这有帮助。