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

如何用Google Apps Script创建表格编辑日志并获取所有编辑者邮箱

解决Google Sheets操作日志无法获取其他编辑者邮箱的问题

问题根源

你当前使用的onEdit(e)是简单触发,这种触发模式运行时无授权权限。对于非脚本所有者的编辑者,Session.getActiveUser().getEmail()会返回空值,仅你作为所有者能正常获取自己的邮箱。

解决方案:改用可安装触发器

可安装的onEdit触发器运行时携带授权,能获取所有已登录编辑者的邮箱地址,具体操作如下:

1. 修改脚本代码

将原函数重命名(避免与简单触发冲突),核心逻辑保留,调整后代码如下:

function logEdits(e) {
  const sName = e.source.getActiveSheet().getSheetName();
  if (sName !== "Recent_Changes") {
    // 可安装触发器下可正常获取所有编辑者邮箱
    const theUser = Session.getActiveUser().getEmail();
    let value;
    const mA1 = e.range.getA1Notation().split(":")[0];
    const time = new Date();
    
    if (typeof(e.value) === 'string') {
      const aCell = e.source.getRange(mA1);
      value = aCell.getValue();
      const form = "'" + aCell.getFormula();
    } else {
      value = e.value;
    }
    
    const data = [sName, mA1, time, value, form, theUser];
    e.source.getSheetByName("Recent_Changes").appendRow(data);
  }
}

2. 创建可安装触发器

  • 打开Google Sheets的脚本编辑器(路径:工具 > 脚本编辑器)
  • 点击左侧菜单的触发器图标(时钟样式)
  • 点击添加触发器,配置以下选项:
    • 要运行的函数:logEdits
    • 部署来源:从工作表
    • 事件类型:编辑时
  • 点击保存,按提示完成授权流程(需允许脚本访问Google账号信息)

注意事项

  • 授权完成后,所有拥有该工作表编辑权限的用户,其操作都会被记录邮箱地址
  • 确保Recent_Changes工作表存在,且脚本具备向该表写入数据的权限
  • 若后续修改脚本,需重新保存并确认触发器配置正常

内容的提问来源于stack exchange,提问作者Anthony Madle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:05:23