我创建了一个应用程序,我收集来自不同用户的表单响应。我在回复电子表格中收到了电子邮件ID的回复。因为我不想将数据存储在电子表格中,所以我通过响应来读取数据。我正面临一些挑战请指导。
查询1. 使用onFormSubmit(e)我无法读取提交的表单,因为代码返回null var form = FormApp.getActiveForm(); Logger.log('usename:'+ form.getId()); 错误“无法调用方法”getId“为null。”虽然如果我硬编码formid的值 var form = FormApp.openById('<>'); 然后它工作正常,我也可以阅读回复。如何获得多个用户的表单响应。
查询2. getRespondentEmail(); 在我的情况下不起作用。即使我使用表单ID<>并尝试从表单提交时捕获的响应中获取电子邮件ID“form.setCollectEmail(true);”我尝试在onFormSubmit(e)函数中使用代码,但dint得到一个结果:
var formResponse = form.response;
Logger.log('用户的电子邮件ID:'+ formResponses.getRespondentEmail());
另一种方式:
Logger.log('用户的电子邮件ID:'+ form.getRespondentEmail());
和
Logger.log('用户的电子邮件ID:'+ e.values [1]);
对我没什么用。请指导。
提前感谢。
答案 0 :(得分:1)
查询1:希望在我的评论中明确说明。
查询2:
很抱歉地说。我完全不明白你的第二个查询问题。
但是根据您的要求,我建议使用此代码。
如果您已创建表单,则应该知道表单ID(我假设)
所以试试这段代码。
var form=FormApp.openById('your form id here');
//this returns your form which you created//
var responses=form.getResponses();
/// this will give you all responses of your form as an array////
///iterate the array to get respondent email id///
for(var i = 0; i < responses.length; i++){
Logger.log(responses[i].getRespondentEmail());
}
希望这会对你有所帮助。
快乐的编码!!
答案 1 :(得分:0)
我认为重要的是要注意,目前您的问题的答案是:您可以获得他们输入的内容,但您无法获得他们真实验证的电子邮件地址.对此进行了更好的解释 in this question,其中一个答案详细介绍了一些解决方法,例如将表单发布为 Web 脚本。
accepted answer 显示用户在表单中输入的电子邮件地址。除了带有 @ 符号之外,没有对此进行身份验证,因此用户可以键入 foofoo@zoomZoom.com
,然后会在表单结果和脚本中查看。
令人讨厌的是,谷歌正在捕获用户的真实电子邮件地址,因为如果设置设置为 Allow One Response Per User
,那么用户只能提交一次 - 无论他们将什么作为电子邮件帐户。我不知道为什么 Google 不提供查看提交者登录电子邮件地址的方法,因为它已经向用户披露了这将被披露。
Microsoft Forms 确实捕获了这一点。