我有两个主要的电子表格。第一个就像一个数据库,我们称它为“ 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”电子表格将出现在“与我共享”文件夹中。
答案 0 :(得分:2)
Publish a webapp受电子表格A约束:
访问权限:任何人,甚至匿名或任何人
执行为:我
WebApp范围:仅适用于当前电子表格(添加//@OnlyCurrentDoc
jsdoc)
脚本(script1)中的功能:doPost()
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访问用户数据。