我的 OnFormSubmit 触发器需要在加载项的 OnFormSubmit 触发器触发之前完成

问题描述

我将 Form Publisher 插件与 Google Forms 一起使用,以便将每个 Forms 响应转换为 Google Doc。这是一个很棒的附加组件。

我已经编写了自己的 OnFormSubmit 触发器(头部部署;应用脚本库的一部分),用于重命名表单用户可能已作为表单响应的一部分上传文件。 (文件名只能从 Drive.App 文件对象中获得,不能从表单响应本身中获得。)

根据 Form Publisher 放入它生成的 Google 文档的上传文件名,我可以看出有时该文档是在我的 OnFormSubmit 重命名文件之前生成的,有时是在我的 OnFormSubmit 触发之后生成的。

所以我的问题是:鉴于我对 Form Publisher 的工作原理一无所知(尽管我认为 OnFormSubmit 将是它的核心),有什么方法可以确保我的 OnFormSubmit 会触发并且在 Form Publisher 开始生成 Google 文档之前完成?

解决方法

谢谢,安塞达诺!我一直在进行测试和研究,我所看到的一切都表明您的评论是正确的。

恐怕如果您有两个触发器从同一个事件中触发,则无法确保一个触发器在另一个之前启动/完成。它们异步发送到服务器,因此订单永远不会可靠。您通常处理此问题的方法是让它们成为同一个触发器的一部分,但由于您将自己的脚本与封闭源代码的附加脚本混合并匹配,这是不可能的。如果您希望您的脚本在那之后触发,您可以使用延迟,但要在此之前触发它,您可能最好编写自己的脚本。

根据记录,似乎有一线希望here。我读到那篇文章的答案是说附加组件可以使用 @customfunction 来公开我的 OnFormSubmit 触发器可以调用的函数;例如,该自定义函数可以让附加组件休眠一段时间(或者甚至更好:休眠直到我调用第二个自定义函数来表示我已完成),以便我的 OnFormSubmit 触发器先运行。

但除此之外,我什么也没想到。