getRespondentEmail()返回我的电子邮件而不是表单响应者

时间:2015-11-02 07:14:32

标签: google-apps-script google-form

我正在使用Google域名,并且正在尝试提取受访者表单的电子邮件(由于必须登录才能填写表单,因此会自动收集该表单)

但结果是我一直收到我的电子邮件而不是表格回应者?

这是包含在给定表单中的代码,因此使用

var form = FormApp.getActiveForm()

但我无法理解为什么每次都收到自己的电子邮件?



function GetRespondersEmail(){
  var form = FormApp.getActiveForm();
  
  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++){
   var emailTo = responses[i].getRespondentEmail();
  
  Logger.log('emailTo = '+emailTo);
  return emailTo;
}
};
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:5)

好的,所以我的经验教训,我要做的是访问填写表单的用户的单个电子邮件地址。所以事实证明我可以用函数onFormSubmit()完全替换上面的函数 即

{{1}}

除非我忽略了某些东西,否则这比我在上面尝试的要简单得多。

答案 1 :(得分:1)

getRespondentEmail():

如果启用了Form.setCollectEmail(collect)设置,则获取提交此响应的人员的电子邮件地址。

您是否将Form.setCollectEmail(collect)设置为true?

注意:此功能仅适用于Google Apps for Business,Google Apps for Education或Google Apps for Your Domain用户创建的表单。无法收集其他类型Google帐户的电子邮件地址。对于使用其他Google帐户创建的表单,此方法会引发脚本异常。

这是编辑: 我改变了你的代码。问题是你在循环中返回一个值,所以你永远不会完成你的循环,只返回第一个响应的电子邮件。

function GetRespondersEmail(){
  var form = FormApp.getActiveForm();
  var emailTo = []
  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++){
   emailTo[i] = responses[i].getRespondentEmail();     
}
  Logger.log('emailTo = '+emailTo);
  return emailTo;
};

我试过这个并且似乎满足了你的需求。