表单触发器中的源和响应错误

时间:2018-08-29 01:26:19

标签: google-apps-script triggers google-form

我使用Google Apps脚本设置了一个简单的工作流程。我从表单A创建了脚本项目。

这是工作流程:

  1. 用户提交对表单A的回复
  2. 该脚本会为表单B创建新的响应,然后提交并通过电子邮件将版本链接发送给我
  3. 我提交了为我创建的脚本形式B的回复
  4. 脚本通过电子邮件向我发送了两种形式的摘要

为此,我以编程方式在表格B上设置了一个触发器:

function addOnNewFormBSubmitTrigger() {
  ScriptApp.newTrigger('onNewFormBSubmit')
    .forForm(FORM_B_ID)
    .onFormSubmit()
    .create();
}

函数onNewFormBSubmit如下所示:

function onNewFormBSubmit(formSubmitEvent) {
  _sendAnalysisEmail(formSubmitEvent.source, formSubmitEvent.response);
}

该函数已触发,但是formSubmitEvent.source的值是形式A,而formSubmitEvent.response是对此形式的最新响应。我希望来源是形式B,因为我在上面附加了触发器。

编辑:

即使传递表单实例而不是其ID也不符合我的预期

function addOnNewAlaysisSubmitTrigger() {
  var form = FormApp.openById(FORM_B_ID);
  ScriptApp.newTrigger('onNewFormBSubmit')
    .forForm(form)
    .onFormSubmit()
    .create();
}

我想念什么吗?

2 个答案:

答案 0 :(得分:0)

您是否尝试过使用Form作为参数,而不仅仅是他的ID。

类似的东西:

var form = FormApp.openById('FORM_B_ID');
ScriptApp.newTrigger('onNewFormBSubmit')
    .forForm(form)
    .onFormSubmit()
    .create();

答案 1 :(得分:0)

谢谢@tehhowch,您在评论中给我的链接使我认为,如果未从表单中创建脚本,则该链接可能会起作用。因此,我做了一个POC,从电子表格创建脚本,并且可以正常工作。

这是我制作的脚本:Google Apps Script

这是两个函数生成的日志:function call logs from Stackdriver

如您所见,我收到了来自两个表格的两个不同的回复。 现在的问题是该事件不是文档https://developers.google.com/apps-script/guides/triggers/events#form-submit_4中定义的提交表单事件,但这是另一回事了。

如果您想尝试,这里是: