我正在尝试为具有多种形式的Google表格开发功能;每个表格在电子表格书中都有一个单独的工作表,而我正在使用一个单独的功能将数据添加到主工作表中。该代码是容器绑定到工作表文件的。
[特别是,我尝试使用单个onFormSubmit触发器,然后通过每个表单提交中不包含该表单的第一个问题的标题来标识表单,并因此识别由onFormSubmit运行的适当的函数和变量传递。时间戳记。当前编码的函数如下;
//Selects onFormSubmit action based on contents of form submission. Regex compliance is enforced by forms.
function onFormSubmit(e) {
Logger.log(e);
var responses = e.response.getItemResponses();
var keyResponse = responses[1].getItem().getTitle();
Logger.log(keyResponse);
if (keyResponse == "CUNY ID") {
var cunyID = responses[1].getResponse();
cunyIDQuery(cunyID);
}
else if (keyResponse == "First Name") {
var firstName = responses[1].getResponse();
var lastName = responses[2].getResponse();
var gpa = responses[3].getResponse();
infoSubmit(firstName, lastName, gpa);
}
else if (keyResponsew == "Q1") {
var q1 = responses[1].getResponse();
var q2 = responses[2].getResponse();
var q3 = responses[3].getResponse();
gradeSubmit(q1, q2, q3);
}
else {
wrongFormError();
}
}
[不幸的是,由于这是容器绑定的,并且我正在作为附加组件进行测试,因此记录器功能并不是很有帮助,但是我确实相信,当我使用e.namedValues而不是e.response时, .getItemResponses,我至少能够确定表单提交似乎正确地传递到了函数中。如果有人能弄清楚这一点,那就太好了。
form submit
触发器如documentation中所指定:
当用户响应形成。表单提交触发器有两种版本,一种用于Google表单本身,如果表单提交给Google表单,则适用于表格电子表格。
event type
On form Submit
,但是取决于您的脚本是绑定到表单本身还是目标电子表格,可选的event source
将为From form
或From spreadsheet
On form Submit
触发器将具有不同的事件对象,具体取决于您的脚本是绑定到表单还是电子表格。event source
From spreadsheet
,可用的事件对象是event source
From form
,可用的事件对象是e.response
,因为这不是From spreadsheet
的有效事件对象。 values
或namedValues
-根据您的喜好,这将以不同的方式为您提供相同的信息。namedValues
没有太大的意义,所以请改用e.values
并跳过e.values[0]
将会是时间戳。