如何在Google Chat机器人通知中获取表单提交者的Email ID?
解决Google表单提交时获取提交者邮箱并发送Chat通知的问题
前提条件
确保你的Google表单已开启收集电子邮件地址功能:
- 打开表单,点击右上角「设置」图标
- 在「常规」标签下勾选「收集电子邮件地址」选项,保存设置
修改后的完整代码
function onFormSubmit(e){ var formResponse = e.response; // 获取提交者邮箱(仅当表单开启收集邮箱时有效) var respondentEmail = formResponse.getRespondentEmail() || "未获取到邮箱"; var itemResponses = formResponse.getItemResponses(); var rname="",ecr="",rgld="",red=""; var responsearray=[],questionarray=[ "Requestor Name", "Category of Change Request:", "Requested Go Live Date", "Requested End Date (Max 7 days from today)", "Submitter Email ID" // 添加邮箱对应的问题标题 ]; for (var i=0; i<itemResponses.length; i++) { switch (itemResponses[i].getItem().getTitle()) { case "Requestor Name": rname = itemResponses[i].getResponse(); break; case "Category of Change Request:": ecr = itemResponses[i].getResponse(); break; case "Requested Go Live Date": rgld = itemResponses[i].getResponse(); break; case "Requested End Date (Max 7 days from today)": red = itemResponses[i].getResponse(); break; } } // 将邮箱加入响应数组 responsearray.push(rname); responsearray.push(ecr); responsearray.push(rgld); responsearray.push(red); responsearray.push(respondentEmail); var message = "A new request has been raised by " ,questionanswer=""; responsearray.forEach((response,index)=>{ if(response!=""){ if(questionanswer==""){ questionanswer = questionarray[index]+"-"+response; } else { questionanswer = questionanswer +"\n"+ questionarray[index]+"-"+response; } } }) if(questionanswer!="" && ecr=="Emergency Change Request (DO NOT USE - UNDER CONSTRUCTION)"){ message = message +" "+ questionanswer; webhook(message); } } function webhook(message) { const url = "https://chat.googleapis.com/v1/spaces/AAAACZKTqrc/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=Zcf9bZSpsrrxX5JxpHaV57fDn18Iq8tJhtmy14uxVtc%3D"; // 替换为你的Webhook地址 const options = { "method": "post", "headers": { "Content-Type": "application/json; charset=UTF-8" }, "payload": JSON.stringify({ "text": message }) }; const response = UrlFetchApp.fetch(url, options); // Logger.log(response); }
关键修改说明
- 获取提交者邮箱:使用
formResponse.getRespondentEmail()方法获取邮箱,同时用|| "未获取到邮箱"处理未获取到的情况(比如表单未开启收集邮箱时)。 - 修正语法错误:修复了原代码中
var rname="",ecr="",rgld="",red="""的多余引号问题,改为正确的var rname="",ecr="",rgld="",red="";。 - 添加邮箱到通知内容:
- 在
questionarray中新增了"Submitter Email ID"作为邮箱对应的标题 - 将获取到的
respondentEmail加入responsearray,让它和其他字段一起被处理到通知文本中
- 在
内容的提问来源于stack exchange,提问作者Pratikp
相关产品推荐
相关产品推荐

