【问题标题】:How to get/read Email ID from a from response如何从响应中获取/读取电子邮件 ID
【发布时间】: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


【解决方案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());
}

【讨论】:

  • 知道了,问题出在阅读回复时。 @formResponses.getRespondentEmail()。感谢您的解决方案。现在它工作正常。
  • 嗨 Bharathi,我很清楚您对查询 1 的评论,我在电子表格中有一个代码可以为多个用户生成动态表单,但我无法跟踪 formID,请您指导我进一步,如何在 onFormSubmit() 中获取 formId?
【解决方案2】:

我认为重要的是要注意,目前您的问题的答案是:您可以获得他们输入的内容,但您无法获得他们真实的经过验证的电子邮件地址in this question 对此进行了更好的解释,其中一个答案详细说明了一些解决方法,例如将表单发布为 Web 脚本。

accepted answer 显示用户在表单中键入的电子邮件地址。除了具有 @ 符号之外,没有对此进行身份验证,因此用户可以键入 foofoo@zoomZoom.com 并且将在表单结果和脚本中查看。

令人讨厌的是,谷歌正在捕获用户的真实电子邮件地址,因为如果将设置设置为 Allow One Response Per User,那么用户将被限制为一次提交——无论他们将什么作为他们的电子邮件帐户。我不确定为什么 Google 不会提供查看提交者登录电子邮件地址的方法,因为它已经向用户披露了这将被披露。

Microsoft Forms 确实捕捉到了这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-13
    • 2015-03-28
    • 1970-01-01
    • 2017-01-21
    • 2012-08-21
    • 2018-11-03
    • 1970-01-01
    • 2015-04-03
    相关资源
    最近更新 更多