我正在使用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;
答案 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;
};
我试过这个并且似乎满足了你的需求。