google-apps-script - 将 onFormSubmit 触发器与一张表的多个表单一起使用
问题描述
我正在尝试为具有多种形式的 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 时,我能够确定,至少,表单提交似乎正确地传递到了函数中。如果有人能够弄清楚这一点,那就太好了。
解决方案
替代使用一个脚本来处理多个表单
Google Sheet formSubmit 事件会针对连接到工作表的任何表单触发。我设法使用 formResponse 结果的范围来确定它来自哪个工作表以了解它来自哪个表单
function myFunction(form) {
const formSheetName = form.range.getSheet().getName();
信用:IMTheNachoMan 评论
推荐阅读
- next.js - NextJS & Prismic - 如何防止 /:uid 渲染主页
- python - 如何在深度学习模型中打印混淆矩阵?
- angular - 调用 APIs aync 依赖于 Angular Native 中的其他 API 值
- git - 哪些本地更改会被结帐覆盖?
- c# - 如何关闭从“ironbarcode”条码生成器创建的图像文件
- javascript - 如何使用 sendgrid api 将 json 对象作为 html 发送
- html - 如何在 flex 容器中对齐多个图像和文本元素?
- python - 如何在 pythonscript 的 Notepad++ 文档切换器中对文件进行排序?
- c++ - 没有构造函数“std::thread::thread”的实例与参数列表匹配
- codenameone - new File("full_path_file_name).lastModified()) 在 IOS 14.4.2 上返回 0