有没有一种方法可以让用户使用脚本编辑另一个电子表格并同时向他隐藏呢?

时间:2020-09-01 11:35:43

标签: google-apps-script google-sheets

我有两个主要的电子表格。第一个就像一个数据库,我们称它为“ A”。用户将使用第二个(“ B”)来查看带有导入范围的“ A”中的某些记录。用户只能使用脚本来对“ A”进行一些更改。 另外,我想向用户隐藏“ A”电子表格,这样他们就不能直接转到“ A”并查看所需的任何数据。
有什么办法可以做到这一点?

我的最后尝试:
用户必须是编辑者才能更改“ A”,所以我将电子表格共享选项设置为“组织中的任何人都可以编辑”,以便用户可以编辑但看不到“ A”电子表格,除非他们具有URL。所以我想对他们隐藏URL。我认为就足够了。该URL位于两个位置:一个位于importrange函数中,一个位于脚本中。
为了将其隐藏在importrange中,我创建了第三个电子表格(我们称其为“ C”),该电子表格从“ A”导入范围,现在“ B”从“ C”导入范围。我是唯一可以访问“ C”的人,并且通过我的帐户,我已将“ B”与“ C”相连,并将“ C”与“ A”相连。因此,即使用户从功能块中读取了URL,也无法清楚地看到“ C”内部的内容。
为了在脚本中稍微隐藏URL,我创建了一个内部库,其中包含URL。用户仍然可以找到它,但是要困难一些。
所有这些的主要问题是,当用户运行一个编辑“ A”的脚本时,“ A”电子表格将出现在“与我共享”文件夹中。

1 个答案:

答案 0 :(得分:2)

Publish a webapp受电子表格A约束:

  • 访问权限:任何人,甚至匿名或任何人

  • 执行为:我

  • WebApp范围:仅适用于当前电子表格(添加//@OnlyCurrentDoc jsdoc)

  • 脚本(script1)中的功能:doPost()

  • 来自用户SpreadsheetB中脚本(例如script2)的
  • POST请求。

  • 如果使用访问权限:Anyone,那么脚本1需要与用户(视图访问权限)和用户的drive scope needs to be included in the post request共享。

  • 以上条件不适用于Anyone, even anonymous。但是,此时,包括机器人在内的世界上任何人都可以访问您的电子表格。由您决定实施任何类型的授权/安全性来阻止doPost内部的此类攻击。

  • Another way is just to publish another webapp(script3),访问权限:任何人,执行方式为:“用户访问Web应用程序” =>获取其电子邮件服务器端=>发布到script1 Webapp。再次在这种情况下,如果script1是与Access:Anyone一起发布的,甚至是匿名发布的,则您需要注意两个Web应用程序之间的授权。

  • 还请注意,可以使用服务帐户。一些service account can be used to just access a Webapp script with Access:Anyone in order to avoid drive scope。某些可用于通过domain wide delegation访问用户数据。