我想为谷歌表单创建一个独立的附加组件,它应该处理表单提交事件,并在谷歌驱动器中创建一个带有表单响应内容的新文本文件。然后为其他用户分发此附加组件。 我的目标是用户可以在谷歌表单上安装附加组件,它应该可以正常工作,无需附加菜单中的其他设置。
测试时我发现有Simple和Installable个触发器可用。 (onFormSubmit
是可安装的触发器)
每次在G-Suite Marketplace上更新加载项时,可安装的触发器都会清除。因此,它会删除我的onFormSubmit
触发器,因此已安装的加载项在更新后停止工作。
onFormSubmit
触发器在onInstall
内添加简单触发器:
function onInstall() {
var form = FormApp.getActiveForm();
var trigger = ScriptApp.newTrigger('respondToFormSubmit')
.forForm(form)
.onFormSubmit()
.create();
}
我想通过处理链接电子表格的简单触发器onFormSubmit
中的onEdit
来绕过此问题。实际上,它可以检查电子表格中的新行,然后创建一个新文件。但是简单的触发器没有自动化私有服务(如谷歌驱动器),所以它不可能在简单触发器内的谷歌驱动器上创建文件。
是否有办法在发布新版附加组件后保留onFormSubmit
触发器,而无需手动重新安装?
嗯,这些都是合理的,但是为什么onInstall
事件不再被提出呢?或者可能有一个事件onUpdate
来处理附加更新?
更新
Here我读到了:
附加触发器将在以下任何一种情况下停止触发:
- 如果用户卸载了加载项
- 如果文档中禁用了加载项(如果重新启用,则触发器将再次运行)
- 如果开发者取消发布附加组件或将损坏的版本提交到附加商店
我只需在发布表单中设置下一个版本号,单击"更新网上商店草稿",然后在新窗口中确认更新。我做得对吗?
即使没有代码修改,触发器也会停止触发,只需使用新版本的附加组件。并且stackdriver控制台中没有任何日志错误。这可能是个错误吗?