允许脚本编辑锁定的单元格

问题描述 投票:0回答:1

我有一个复杂的电子表格,其中大部分工作表都被锁定,用户只能编辑少数单元格,这会触发一堆计算。这曾经工作得很好,但现在的问题是我添加了一个绘图,我在其中附加了一个脚本,因此它充当一个按钮。这样做会强制用户必须授权,现在脚本以该用户身份运行,因此当脚本尝试更新锁定到该用户的单元格时,它会失败。

如何才能使用户无法在单元格中键入内容,但我的脚本仍然可以更新它们。基本上我希望脚本能够完全访问工作表,不受用户权限的限制。

google-sheets google-apps-script spreadsheet-protection
1个回答
3
投票

解决方法#1 - 服务帐户:

  • 创建服务帐户

  • 将具有编辑权限的电子表格共享到服务帐户的电子邮件

  • 安装并使用 Google oauth2 库 获取具有必要范围(驱动器/表格/两者)的承载令牌。该令牌可用于模拟服务帐户。

  • 使用上面的不记名令牌,您可以直接访问

    • 使用
    • 或使用已发布的 Web 应用程序(设置为“访问应用程序的用户”和“任何人”执行)来使用内置服务,例如
      SpreadsheetApp
      。请参阅下面链接的第二个相关答案。
  • 在这种情况下,服务帐户的

    PRIVATE_KEY
    充当访问具有编辑权限的电子表格的密码。因此,直接在脚本编辑器中公开它将使任何编辑器能够访问电子表格的受保护区域和所有服务帐户资源。因此,从某种程度上来说,保护区并没有得到绝对的保护。如果保护区需要绝对保护,你也许可以绕过这个限制

    • 使用两个脚本项目:一个绑定的脚本项目

      post
      将数据传输到未绑定的脚本项目,后者作为 Web 应用程序发布并保存私钥。在这里,可以向编辑者提供密码来访问未绑定的脚本。

    • 另一种方法是简单地发布插件,因为插件的源代码对最终用户永远不可见。

解决方法#2 - 可安装的触发器:

  • 使用带有复选框的可安装编辑触发器。用户单击未受保护区域中的复选框,脚本会修改受保护区域。

  • 可安装触发器在安装它的用户的权限下运行,而不是以当前用户的身份运行。

  • 他们可以绕过工作表的权限限制。但这是一把双刃剑。 任何具有编辑权限的人都可以触发该脚本。不仅如此,他们还可以访问脚本编辑器并根据需要修改脚本。为了限制犯规的使用,

相关:

© www.soinside.com 2019 - 2024. All rights reserved.