Google Apps 事件更改类型在 Google 表格中未定义

问题描述 投票:0回答:2
function onEdit(e) {
  Browser.msgBox(e.changeType);
  if (e.changeType == 'EDIT') {
    ...
  }
}

当工作表单元格从空更改为数字时,该事件成功触发,但 msgBox 输出显示“未定义”。

e.changeType 不应该包含“EDIT”吗?

我正在使用此参考:https://developers.google.com/apps-script/understanding_events

google-apps-script google-sheets triggers
2个回答
4
投票

您参考的文档不涉及简单的onEdit触发器,它与可安装的onChange触发器一起工作,这是完全不同的。

您应该将函数重命名为您想要的任何名称(但不是“onEdit”),并从脚本编辑器菜单/资源/当前项目触发器/添加 onchange 触发器

然后,如果您想知道事件信息中返回什么值,您可以使用如下代码:

function testonChange(e) {
  Browser.msgBox(Utilities.jsonStringify(e));
}

您将清楚地看到该事件是如何被考虑的。


0
投票

截至 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
是否存在。希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.