【问题标题】:onEdit trigger doesn't catch current useronEdit 触发器不会捕获当前用户
【发布时间】:2018-02-04 17:04:47
【问题描述】:

我正在尝试为使用单元格注释的工作表构建一个简单的日志。 不知何故,我无法包含触发 onEdit-event 的用户的电子邮件。

function onEdit(e){
    var email = Session.getActiveUser().getEmail();
    var date = String(Utilities.formatDate(new Date(), 'Europe/Berlin', 'HH:mm dd/MM/yy'));
    var range = e.range;
    range.setNote(email + " @ " + date);
}

注释出现在单元格上,但电子邮件为空。这可能与缺少权限有关吗?我假设如果我的代码有问题,则注释根本不会出现在工作表中已编辑的单元格上...

【问题讨论】:

    标签: google-apps-script triggers google-sheets


    【解决方案1】:

    以下是 Google 文档中关于 Session 类的说明

    Session 类提供对会话信息的访问,例如 用户的电子邮件地址(在某些情况下)和语言设置。

    关于 'getActiveUser()' 方法,它声明

    如果安全策略不允许访问 用户的身份,User.getEmail() 返回一个空白字符串。这 电子邮件地址可用的情况各不相同:对于 例如,用户的电子邮件地址在任何情况下都不可用 允许脚本在没有该用户授权的情况下运行,例如 简单的 onOpen(e) 或 onEdit(e) 触发器,Google 中的自定义函数 表格或部署为“像我一样执行”的网络应用程序(即授权 由开发人员而不是用户)。然而,这些限制 如果开发者和用户属于 相同的 G Suite 域。

    因为您使用简单的触发器 - onEdit() - 除非用户明确授权,否则代码不会执行。对于可安装的触发器,这意味着从脚本编辑器手动执行函数。

    您可以将项目作为工作表插件发布。在这种情况下,用户将被要求授予插件清单中声明的​​权限。

    更多信息https://developers.google.com/apps-script/reference/base/session

    【讨论】:

      猜你喜欢
      • 2019-07-27
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-09
      • 1970-01-01
      相关资源
      最近更新 更多