1

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

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

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

如果有人有想法会很棒,在此先感谢

4

3 回答 3

1

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

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

不,除非他们有权访问信息,否则B无法从中获取信息A,至少作为查看者。您不能授予单个单元格的查看权限,这实际上是您想要做的。

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

我能做的最好的。

于 2012-08-28T19:13:35.450 回答
0

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

我认为以下可能有效。文件是包含代码的集合文件。B 文件具有来自 A 的具有共享权限的 importrange() 函数。并且 C 文件具有来自 B 的 importrange() 并具有 B 文件的共享权限。小转折是 B 文件有一个隐藏和受保护的链接表。我已经检查过了,如果您不是所有者,您将能够取消隐藏它。

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

于 2012-09-02T10:55:53.687 回答
0

我面临着类似的问题。

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

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

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

现在,因为我不希望B用户知道ASS 唯一地址。(查看importrange功能时)

我正在使用SSimportrange中的功能保护和隐藏工作表。B我在BSS 中为隐藏表使用了额外的内部引用。

于 2012-08-28T22:03:31.500 回答