如何在提交Google表单前获取Google邮箱值?求GAS示例
Google表单提交前校验登录邮箱(黑名单拦截)GAS实现
前置设置
- 打开目标Google表单,进入「设置」页面,开启收集电子邮件地址(建议选择「要求收集电子邮件地址」,确保能获取到用户登录邮箱)
脚本实现
打开表单的脚本编辑器(右上角「扩展程序」→「Apps Script」),替换默认代码为以下内容:
// 黑名单邮箱列表,可自行添加/修改 const BLACKLIST_EMAILS = ["blacklist1@example.com", "blacklist2@example.com"]; /** * 表单提交触发函数,需设置可安装的「表单提交」触发 * @param {Object} e 表单提交事件对象 */ function onFormSubmit(e) { // 获取提交用户的邮箱 const respondentEmail = e.response.getRespondentEmail(); // 校验邮箱是否在黑名单中 if (respondentEmail && BLACKLIST_EMAILS.includes(respondentEmail)) { // 删除黑名单用户的提交响应 e.response.deleteResponse(); // 可选:发送通知给管理员(或提示用户,这里以管理员通知为例) const adminEmail = "admin@example.com"; MailApp.sendEmail({ to: adminEmail, subject: "黑名单用户尝试提交表单", body: `用户邮箱:${respondentEmail}\n提交时间:${new Date().toLocaleString()}` }); } }
配置触发
- 在脚本编辑器左侧点击「触发器」图标(时钟样式)
- 点击「添加触发器」,配置如下:
- 选择要运行的函数:
onFormSubmit - 选择事件源:「表单」
- 选择事件类型:「表单提交」
- 选择要运行的函数:
- 保存并完成授权(首次授权需按提示完成权限验证)
补充说明
- 如果需要更灵活的黑名单管理,可以将邮箱列表存储在Google表格中,通过
SpreadsheetApp读取数据 - 若表单允许外部用户提交,需确保「收集电子邮件地址」设置为「允许用户选择是否发送」,但此时可能无法获取到部分用户邮箱
内容的提问来源于stack exchange,提问作者王大大
相关产品推荐
相关产品推荐

