如何从响应中获取/读取电子邮件ID

时间:2014-04-18 08:20:51

标签: google-apps-script google-form

我创建了一个应用程序,我收集来自不同用户的表单响应。我在回复电子表格中收到了电子邮件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]);
对我没什么用。请指导。



提前感谢。

2 个答案:

答案 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 确实捕获了这一点。