You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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更稳定,尤其是在批量编辑或其他复杂操作场景下。
  • 增加错误捕获:如果用户拒绝授权访问邮箱,脚本会在对应单元格提示错误信息,避免静默失败。

安装可安装触发器步骤

  1. 打开你的Google表格,进入脚本编辑器(工具 -> 脚本编辑器)。
  2. 将原脚本替换为上面的新脚本,保存项目。
  3. 点击编辑器顶部的编辑 -> 当前项目的触发器。
  4. 点击右下角的添加触发器按钮,按以下配置设置:
    • 选择要运行的函数:recordApprovalTimestamp
    • 选择部署来源:Head
    • 选择事件来源:电子表格
    • 选择事件类型:编辑时
  5. 点击保存,会弹出授权提示,按照指引完成授权(需要登录你的Google账号,并允许脚本访问必要的权限)。

注意事项

  • 如果你的表格是在Google Workspace域内使用,可能需要联系域管理员确认是否允许脚本访问用户邮箱信息。
  • 测试时请用另一个Google账号编辑第18列,验证是否能正确记录该账号的邮箱和当前时间。

内容的提问来源于stack exchange,提问作者Seamus McGorray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 17:20:19