Igo*_*gor 1 google-sheets google-apps-script
我有一个电子表格来跟踪数据,每个有链接的用户都可以编辑.虽然我明白这是一个安全隐患,但我不介意,因为电子表格只是我所知道的并且对我所在的公会感兴趣.
更多特定区域受到保护,只有文档管理员才能访问它.
我想做的是,让GAS对所有(匿名)用户的"onEdit"做出回应.
最简单的例子是这样的:
Code.gs
function onEdit(e) { Browser.msgBox('Editing...'); }
Run Code Online (Sandbox Code Playgroud)
我将它附加到表 - >编辑触发器,它确实为我显示 - 因为我登录OR,因为我是这个文档的管理员.但是:其他(匿名)用户由于某种原因没有收到消息框.我已经阅读了权限表并且说明了,如果你想要使用任何类型的脚本(除了那些时间驱动的脚本,以一个脚本的名义执行,添加它们),显然你必须登录).
没有解决方法吗?我的触发器只是将值从一个表复制到另一个表,排序和格式化它们.
非常感谢你提前!
实际上有2个onEdit触发器,"简单"触发器和"可安装"触发器.
在简单的onEdi牛逼运行的用户访问电子表格,而不要求任何的授权,这意味着它无法执行任何需要的授权和使用SpreadsheetApp方法需要授权(如你注意到当你自己运行该脚本的第一次) .
可安装的触发器(onEdit,onChange等等)作为脚本的作者运行,更准确,它们作为安装触发器的用户运行.
它们(触发的功能)具有与用户自己相同的"权限",并且可以完成用户可以执行的所有操作.
使用电子表格的匿名用户(未登录)将触发此脚本,但他们不会对脚本的作用负责,并且所有操作都将以触发器"安装程序"的名称完成.
请随意尝试我编写此脚本的电子表格:
function onEdit(e) {
SpreadsheetApp.getActiveRange().setValue('simple onEdit Trigger running as sheet user without authorization');
}
function onEditInstallable(e) {
SpreadsheetApp.getActiveRange().setValue('Installable onEdit Trigger running as script author');
}
Run Code Online (Sandbox Code Playgroud)
在您尝试并测试该副本后,请在不安装任何特殊触发器的情况下制作副本.
然后比较结果:在我的工作表中,您将从第二个函数中获取消息,而在您的工作表中,它将是来自第一个函数的消息.
当可安装触发器处于活动状态并且您编辑工作表时,将触发这两个功能,并且您实际上可能会连续看到这两个文本,因为它们通常不会花费完全相同的时间来运行.
如果您在工作表中安装了一个调用该onEditInstallable函数的触发器,匿名用户将始终看到第二个用户onEdit(从脚本编辑器转到Ressources/current project triggers/create new trigger并选择您需要的触发器)
| 归档时间: |
|
| 查看次数: |
1306 次 |
| 最近记录: |