首页 > 解决方案 > getActiveUser getEmail 权限问题

问题描述

我有一个谷歌表,在过去的 18 个月里运行良好,当相应的单元格使用类似的东西编辑时,在特定的行/列中输入用户名:

function onEdit(e) {
     (Session.getActiveUser().getEmail());
     ....
}

最近,这已经停止工作,可能是因为我们不在 GSuite 服务上(尽管我想知道为什么它现在还能工作)。

我尝试禁用 V8 运行时,尝试安装 onEdit 触发器,尝试使用 Drive API 脚本获取用户名(在“高级 Google 服务”中添加 Drive API),一些旧的解决方法(不再有效),撤销权限和再次允许,但没有运气。

它的工作似乎有点奇怪(可能从 2021 年 10 月开始停止),并且我可以单击一个单元格并检查编辑历史记录,但出于安全原因,无法将用户名数据写入单元格。

关于这个有几个较旧的帖子,但没有当前的解决方案,所以很抱歉再次挖掘这个,但我想知道是否有解决方案?

根据 Kos 的帮助进行更新:(重新)添加触发器似乎可以解决权限问题,前提是它是 Runtime V8 并且为每个用户添加触发器,然后正确记录电子邮件地址。但是,由于现在有几个 onEdit 触发器,它们每个都会发生冲突,并且此电子邮件地址条目会被迅速删除。单元格的编辑历史显示“其他”用户立即删除电子邮件地址。

另一个更新: 我通过在 onEdit 的内容上添加一个 Lock 来解决这个冲突,请参阅https://stackoverflow.com/a/68191989/2441916

function onEdit(e) {
  var lock = LockService.getDocumentLock();
  lock.waitLock(20000);
  // DO SOMETHING
  SpreadsheetApp.flush();
  lock.releaseLock();
}

关键要点:

标签: google-apps-scriptgoogle-sheets

解决方案


推荐阅读