使用“ onsubmit”向多个电子表格提交表单

时间:2019-12-18 18:19:24

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

我有一个Gform,根据第一个问题中的多项选择答案,我需要提交该文件才能进入3个电子表格中的1个。如下所示。

这是哪个项目的?

  1. 项目A
  2. 项目B
  3. 项目C

我只能使用1个初始形式。我需要提交的内容转到完全不同的电子表格,而不仅仅是一个电子表格中的不同选项卡。而且,我不能使用导入范围功能,因为它将不允许在原始提交过程中发生错误时覆盖数据,而不会与其他项目提交和数据一起进入表单响应页面。

我目前的两个想法是

  1. 使用“ onsubmit”脚本根据提交人对第一个问题的回答来路由提交,但是我找不到其他有关如何执行此操作或有人执行类似操作的示例。我发现最接近的方法是使用onsubmit之后再发送特定的电子邮件,但实际上没有更改提交的目的地。
  2. 使用脚本构建表单,在他们回答第一个问题(项目A,B,C)之后,它将重定向到另一部分或单独的表单,在该表单或表单中,提交将被发送到每个项目的电子表格。对于这个想法,我很难弄清楚如何获取不同的表单部分以提交到单独的电子表格,或者如何根据用户对第一个问题的答案使用户重定向到另一种表单。

任何帮助或建议将不胜感激。谢谢,

1 个答案:

答案 0 :(得分:0)

使用第一种选择:

function onFormSubmit(e) {
  var ssObj={'ProjectA':'ssid','ProjectB':'ssid','ProjectC':'ssid'};
  var ss=SpreadsheetApp.openById(ssObj[e.values[1]]);//assuming question one is the answer for which project the response is supposed to go to
  var sh=ss.getSheets()[0];
  sh.appendRow(e.values)';
}

好的,我认为您需要一些解释。

  1. 首先,您必须设置一个onFormSubit()触发器。您可以从Edit/Current Project Triggers menu开始。当提交表单触发此功能时,e.values将是该表单中所有答案的数组。

您也可以使用代码进行此操作:

function createOnFormSubmitTrigger() {
  var ss=SpreadsheetApp.getActive();
  ScriptApp.newTrigger('onFormSubmit').forSpreadsheet(ss.getId()).onFormSubmit().create();
}
  1. ssObbj是您根据问题答案中的信息创建的javascript对象。 var ssObj={'The answer for for project A':'the spreadsheet id for project A','the answer for project B':'the spreadsheet id for project b','the answer for project C':'the spreadsheet id for answer C'};

一些阅读参考。

onFormSubmit Object for spreadsheet

onFormSubmit Object for form

SpreadsheetApp.openById()

Sheet.appendRow()