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

Google Sheets Web App脚本Session.getActiveUser()失效问题求助

Google Sheets脚本中编辑者邮箱显示后消失的问题解决

你的脚本存在两个关键问题导致邮箱显示几秒后消失:

  • 错误使用了Session.getActiveUser()获取编辑者信息:在触发器事件中,应该通过事件对象e的e.user属性获取实际编辑者的邮箱,而非Session.getActiveUser()。后者在可安装触发器或Web App场景下,可能返回部署者的账号而非当前编辑用户,甚至在某些权限场景下后续被清空。
  • 冗余的重复判断与未定义变量:脚本中重复了两次row >=5 && col ==2的判断,且Logger.log(email)中的email变量未定义,会导致日志报错(虽不影响主功能,但需修正)。

修正后的脚本代码

function addTimestamp(e) {
  const row = e.range.getRow();
  const col = e.range.getColumn();
  const sheet = e.source.getActiveSheet();

  // 合并判断逻辑,避免重复执行
  if (row >= 5 && col === 2) {
    // 设置时间戳
    sheet.getRange(row, 29).setValue(new Date());
    // 通过事件对象获取编辑者邮箱
    const editorEmail = e.user.getEmail();
    sheet.getRange(row, 30).setValue(editorEmail);
    Logger.log(editorEmail); // 修正未定义变量问题
  }
}

关键配置说明

  • 触发器设置:如果是绑定脚本的自动触发,需将此函数设置为可安装的onEdit触发器,配置时选择“以触发事件的用户身份运行”,确保e.user能正确获取编辑者信息。
  • Web App权限:如果是Web App调用此函数,部署时需将权限设置为“任何人(需登录Google账号)”,避免匿名访问导致e.user返回空值。
  • 单元格检查:确认第30列没有设置公式、联动规则或其他脚本,防止写入的邮箱被自动覆盖清空。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 01:12:11