当提交不同的表单 (B) 时,我尝试运行连接到一个表单 (A) 的脚本。我有一系列相似的不同形式,需要运行相同的脚本,因此我不知道这是否可能,而不是将代码复制到每个脚本。
我成功地在 A 中制作了一个可安装的触发器函数,指向 B。当出现提示时,我已授予权限。
当我发布 B 时,A 中的脚本会触发,我会在日志中看到以下内容:
Exception: No response with ID 2_ABaOnudSFDkNQOL2Xn4fNOmT95GrTotEW8LSjxfI5qf6qceDN5hD5CHKqNT5D4G_DdONWq0 exists for this form.
at onFormAnswerSubmit(Kod:40:20)
停止的行 (Kod:40:20) 是获取发布数据的行:
var items = e.response.getItemResponses();
这应该有效吗?还是不可能将发布的数据从一种表单传递到另一种表单的脚本?
或者我还可以在触发器中做更多的事情吗?就像强制传递 e 一样。或者其他的东西?
这是我创建的触发器:
/**
* Creates a trigger for when a different form is posted that runs a function in this script (run once)
*/
function createOtherFormTrigger() {
var formID = FormApp.openById("XXXXX"); // form B
ScriptApp.newTrigger('onFormAnswerSubmit') // a function in this script, in form A
.forForm(formID)
.onFormSubmit()
.create();
}
您需要稍微改变一下逻辑:
触发器上触发的函数应包含在与触发器相同的脚本中。
为表单 B 创建 formSubmit 触发器的示例代码:
//run this once
function createOtherFormTrigger() {
var formB = FormApp.openById("XXX");
ScriptApp.newTrigger('onFormAnswerSubmit') // a function in this script, in form B
.forForm(formB) //the active form is Form B
.onFormSubmit()
.create();
}
function onFormAnswerSubmit(e){
var formB = e.source;
var items = e.response.getItemResponses(); //items of the latest form response of form B
var formA = FormApp.openById("XXXX"); // Form A
...
// do what you need to do with form A
}
上面的代码将创建在提交表单 B 的表单响应时触发的触发器。因此,脚本是否绑定到形式 A、形式 B 或是否为形式并不重要。独立的。实际上,在独立脚本中实现这些函数可能最有意义,以确保它们不会干扰表单绑定脚本中可能拥有的其他表单提交触发器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)