【发布时间】:2021-05-23 17:20:07
【问题描述】:
我创建了一个应用程序,用于收集来自不同用户的表单响应。我在回复电子表格中收到电子邮件id 的回复。因为我不想将数据存储在电子表格中,所以我正在通过响应读取数据。我面临一些挑战,请指导。
查询 1
在使用 onFormSubmit(e) 时,我无法读取提交的表单,给定代码返回 null:
var form = FormApp.getActiveForm();
Logger.log('usename:' + form.getId());
错误“无法调用 null 的方法“getId”。”虽然如果我硬编码了 formid var form = FormApp.openById('<<form_id_xyz>>'); 的值,那么它工作正常,我也可以读取响应。
如何获取多个用户的表单响应?
查询 2
getRespondentEmail(); 在我的情况下不起作用。即使我使用表单 ID > 并尝试从我在提交表单时捕获的响应中获取电子邮件 ID form.setCollectEmail(true); 我尝试在 onFormSubmit(e) 函数中使用以下代码,但得到了结果:
var formResponse=form.response;
Logger.log('email id of user: ' + formResponses.getRespondentEmail());
还有另一种方式:
Logger.log('email id of user: ' + form.getRespondentEmail());
和
Logger.log('email id of user: ' + e.values[1]);
没有什么对我有用。请指导。
【问题讨论】:
-
如果您的应用程序脚本是在表单本身中创建的,那么只有 FormApp.getActiveForm();会给你形式。而如果你是应用程序脚本在驱动器中,那么 FormApp.getActiveForm();将返回空值。检查此为您的第一个查询。您能否发布您的第二个查询的代码。
-
哦,我的错,我正在从电子表格动态创建表单,那么如何捕获已提交表单的表单 ID?
-
获取email id的相关代码:function onFormSubmit(e) { var form = FormApp.openById('1ZQkN76JbZEpnWG9D0GQZfSWD8YHlP5nbuqIcfJpC9a0'); //读取响应 Logger.log('email : ' + form.getRespondentEmail()); Logger.log('email:' + formResponses.getRespondentEmail()); Logger.log('email : ' + e.values[0]); }
标签: google-apps-script google-forms