Google应用脚本:从电子表格中获取数据而不具有查看权限(不可安装触发器)

时间:2012-08-28 13:59:05

标签: permissions google-apps-script

问题是我有各种电子表格(a),其中只有一个人具有查看和编辑权限,还有其他人需要这些电子表格中的一些数据(a)用于他们的电子表格(b),他们还需要能够从电子表格中获取数据的更新版本(a)

我现在创建了一个解决方法,使用带有编辑功能的可安装触发器(他们必须更改电子表格中的特定字段)来更新数据,但是人们想要一个他们可以点击的按钮/绘图或菜单条目从电子表格中获取更新的数据(a)。

从我的角度来看,将可安装的触发器与按钮/绘图/菜单条目相结合是一个死胡同。因此,我的问题是,如果有任何其他可能性来授予对电子表格数据的访问权限,而不对数据来源​​的文档提供查看或编辑权限......

如果有人愿意,请提前感谢

3 个答案:

答案 0 :(得分:1)

您将要遇到的电子表格中使用的触发器有一些限制。查看this了解详情。基本上,onEdit触发器无法访问/修改另一个电子表格They cannot access any services that require authentication as that user.

要更新当前电子表格之外的其他电子表格,我只需安装一个函数和一个菜单项来触发它。 (这是你说的死胡同吗?)它确实取决于用户更新组,但这对我的安全数据有利,因为它需要密钥持有者的知识才能允许其他人获取信息。这是AB,这是可能的,但B必须具有A电子表格的编辑权限。

不,B无法从A获取信息,除非他们可以访问它,至少与查看者一样。您无法向单个单元格授予查看权限,这基本上就是您要执行的操作。

如果没有这种能力,解决方案更多的是构建数据流。在一个用户证明他们无法信任定期更新团队的senerio中,我将自己创建为0。我拥有AB的权限。我从0运行该功能以访问A并更新B,它还会向他们发送电子邮件,因此所有人都知道上次更新的时间。为什么我不使用A电子表格来运行该功能,因为从0我可以访问它并将其写入B而无需查看数据。这是无知的面纱。我从未真正打开A0仍为空。

我能做的最好。

答案 1 :(得分:0)

我遇到了类似的问题。

我认为我找到了一种解决方法,但不能保证。 我使用了importrange函数,我打算通过脚本来控制它。 我已经尝试了刷新功能,发现它是强制importrange工作的好触发器,我将其添加到Menu(以防万一)。

function onOpen() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var menuEntries = [];
    menuEntries.push({name: "Refresh", functionName: "SheetFlush"});
    ss.addMenu("Menu", menuEntries);
}

function SheetFlush() {
    SpreadsheetApp.flush();
}

现在,因为我不希望B用户知道A SS唯一地址。 (当查看importrange函数时)

我正在使用importrange SS中的B功能保护和隐藏工作表。我在B SS中使用额外的内部参考来隐藏表格。

答案 2 :(得分:0)

我可能对你的异常有一个答案。 我的应用程序客户端是来自我的googleapp工作组的人,他们没有权限 查看文件,但他们不是一个完全陌生的人。

我认为以下可能有效。 文件是带代码的集合文件。 B文件具有来自A的importrange()函数,具有共享权限。 并且C文件具有来自B的importrange()以及B文件的共享permmsion。 小麻烦是B文件有一个隐藏和保护的链接表。 我检查过这个,如果你不是主人,你就可以取消隐藏它。

在实践中,我的填充是你可以使用2个SpreadSheets进行类似的技巧, 第三个是为了额外的安全。