google-apps-script - 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();
}
关键要点:
- 每个用户都必须安装(并授权)onEdit 触发器。(如果是非商务套房)
- 必须是运行时 V8
- 需要 onEdit 上的内容锁定(请参阅链接帖子)
解决方案
推荐阅读
- webgl - WebGL 使用 36 个索引绘制立方体
- node.js - CORS 问题 - 响应中“Access-Control-Allow-Origin”标头的值不能是通配符“*”
- php - 以编程方式创建类别和子类别 Wordpress
- reactjs - 使用 Typescript 为 json 流重写对双簧管的 fetch 调用
- javascript - 如何从 api 获取内部数据?(反应,节点)
- android - 我如何将图像设置到 textview 的右下角并带有流动的文字?
- javascript - 想做一个多页导航菜单“HTML、JS、jQuery、Bootstrap”
- java - 如何退回给定客户的所有搁置订单
- python-3.x - python mss ScreenShotError
- function - 输入长度和按钮点击问题