如何用Google Sheets脚本在勾选复选框时捕获用户邮箱、姓名等信息?
解决审批时间戳及用户邮箱捕获问题
首先,你的脚本目前只能获取到你自己的邮箱,核心原因是简单的onEdit触发受限于Google Apps Script的授权范围——在简单触发模式下,Session.getActiveUser().getEmail()只能返回脚本所有者的邮箱,无法获取其他编辑用户的个人信息,哪怕他们正在编辑表格。
要解决这个问题,我们需要切换到可安装的编辑触发器,并调整脚本逻辑来正确捕获当前编辑用户的邮箱和时间戳。
修改后的脚本
function recordApprovalTimestamp(e) { // 使用事件对象e获取当前操作的范围,比getActiveCell更可靠 var range = e.range; var sheet = range.getSheet(); // 检查是否在目标工作表和目标列 if (sheet.getName() !== "Brand Approval" || range.getColumn() !== 18) { return; // 不符合条件就直接退出 } try { // 获取当前编辑用户的邮箱(仅在可安装触发器下能正确获取其他用户邮箱) var userEmail = Session.getActiveUser().getEmail(); var currentDate = new Date(); // 设置日期到第19列(原offset(0,1)),邮箱到第20列(原offset(0,2)) range.offset(0, 1).setValue(currentDate); range.offset(0, 2).setValue(userEmail); } catch (error) { // 捕获授权失败的情况,比如用户拒绝授权访问邮箱 range.offset(0, 2).setValue("无法获取用户邮箱:" + error.message); } }
关键调整说明
- 替换简单触发为可安装触发:简单触发没有足够的权限访问其他用户的个人信息,可安装触发需要用户主动授权,因此能正常获取当前编辑用户的邮箱。
- 使用事件对象
e:直接通过事件对象获取操作范围,比getActiveCell更稳定,尤其是在批量编辑或其他复杂操作场景下。 - 增加错误捕获:如果用户拒绝授权访问邮箱,脚本会在对应单元格提示错误信息,避免静默失败。
安装可安装触发器步骤
- 打开你的Google表格,进入脚本编辑器(工具 -> 脚本编辑器)。
- 将原脚本替换为上面的新脚本,保存项目。
- 点击编辑器顶部的编辑 -> 当前项目的触发器。
- 点击右下角的添加触发器按钮,按以下配置设置:
- 选择要运行的函数:
recordApprovalTimestamp - 选择部署来源:
Head - 选择事件来源:
电子表格 - 选择事件类型:
编辑时
- 选择要运行的函数:
- 点击保存,会弹出授权提示,按照指引完成授权(需要登录你的Google账号,并允许脚本访问必要的权限)。
注意事项
- 如果你的表格是在Google Workspace域内使用,可能需要联系域管理员确认是否允许脚本访问用户邮箱信息。
- 测试时请用另一个Google账号编辑第18列,验证是否能正确记录该账号的邮箱和当前时间。
内容的提问来源于stack exchange,提问作者Seamus McGorray
相关产品推荐
相关产品推荐

