gpt4 book ai didi

google-apps-script - 使电子表格只能通过脚本编辑

转载 作者:行者123 更新时间:2023-12-04 20:15:07 28 4
gpt4 key购买 nike

我有一个脚本,它添加新行并以某种方式更改工作表。
我想锁定此工作表,使其无法手动编辑,但允许运行脚本。

有没有办法做到这一点?

最佳答案

是的,这不是最容易做的事情,但这是可能的。

但在我们开始之前,了解 Google 电子表格/工作表保护的工作原理很重要。

无法保护文件所有者的工作表或范围。因此,如果您还想保护自己的文件(假设您是所有者)。那么现在唯一可用的解决方案(我希望他们将来改变这一点)是将文件的所有权更改为另一个帐户。大多数人所做的是使用另一个他们不经常使用的 Google 帐户(如果您还没有,您可以轻松创建一个虚假帐户)。

然后,将文件传输到另一个帐户后,您可以使用常规 GUI 轻松锁定对范围、工作表或整个电子表格的更改。

好的,现在到脚本。脚本运行时,总是使用特定账户的授权,可以做这个账户能做的一切。例如,当有人直接从脚本编辑器运行脚本,或单击自定义菜单或图像时:它在单击的帐户下运行。但是如果你设置了 installable trigger ,那么脚本总是在首先设置触发器的帐户下运行(而不是谁在执行实际触发它的操作)。 Simple event triggers作为触发操作的人运行(您可以匿名思考),但他们无能为力,这是一项安全功能(阅读链接以获得更好的理解)。

最后,当将脚本发布为 Web 应用程序时,有一个选择框可以选择脚本是作为开发人员还是用户运行。很简单。

回到问题。由于我们已将所有人锁定在所需的工作表/范围之外。对于要更改此锁定区域的脚本,它必须以文件所有者身份运行!

如果您所做的更改是自动的,例如通过可安装的触发器,那么你很好。只需使用文件所有者帐户设置触发器即可。此外,如果您的用户正在“外部”访问脚本,即通过网络应用程序。那么这很容易,只需将 Web 应用程序设置为以开发人员(文件所有者)身份运行即可。

最复杂的情​​况是,如果您需要从自定义菜单运行脚本,然后该脚本将在单击它的人的权限下运行,而这些人本身无法对 protected 区域进行更改。解决这个问题的方法是将脚本部署为作为开发人员运行的 web-app,并从按钮单击运行函数以使用 UrlFetch 调用部署的 url。 ,可能会传递一些参数来指定需要做什么。然后,由于 webapp 作为开发人员(即文件所有者)运行,它可以进行任何所需的更改,并将任何值(通常是 JSON)返回(如果有返回值)到调用函数(作为用户并与他的 session 相关联),因此您可以在弹出窗口或 toastr 等上向他显示消息。

这有点棘手,但效果很好,您可以在电子表格中包含的同一个脚本上完成所有这些。但是,如果您担心您的用户可能会访问脚本编辑器并更改代码(这是可能的),那么您应该将 web-app 部分分离到不同的文件中,您不需要与他们共享。

关于google-apps-script - 使电子表格只能通过脚本编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19672557/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com