我有一个复杂的电子表格,其中大部分工作表都被锁定,并且用户只能编辑少数单元格,这会触发大量计算。过去可以正常工作,但是现在的问题是我添加了一个图形,并在其中附加了脚本,因此它可以充当按钮。这样做会强制用户必须授权,并且脚本现在必须以该用户身份运行,因此当脚本尝试更新锁定给该用户的单元格时,它将失败。
如何做到这一点,使用户无法键入单元格,但我的脚本仍可以更新它们。基本上,我希望脚本具有对工作表的完全访问权限,而不受用户权限的限制。
答案 0 :(得分:2)
创建一个service account
使用对服务帐户电子邮件的编辑权限共享电子表格
安装并使用Google oauth2 library来获取具有必要范围(驱动器/表/两者)的Bearer令牌。此令牌可用于模拟服务帐户。
使用上面的承载令牌,您可以直接访问
SpreadsheetApp
。请参阅下面链接的第二个相关答案。在这种情况下,服务帐户的PRIVATE_KEY
用作访问具有编辑权限的电子表格的密码。因此,直接在脚本编辑器中将其公开将允许任何编辑器访问电子表格的受保护区域和所有服务帐户资源。因此,从某种意义上说,并不是绝对地保护了保护区。如果需要绝对保护保护区,则可以绕过此限制
使用两个脚本项目:绑定一个post
,将数据https://www.googleapis.com/auth/spreadsheets.currentonly
绑定到未绑定的项目,该数据作为网络应用发布并持有私钥。在这里,可以为编辑者提供访问未绑定脚本的密码。
另一种方法是简单地发布插件,因为最终用户永远看不到插件的源代码。
使用带有复选框的installable edit trigger。用户单击非保护区域中的复选框,然后脚本修改保护区域。
可安装触发器在安装它的用户的权限下运行,而不是当前用户。
他们可以绕过工作表的权限限制。但这是一把双刃剑。具有编辑权限的任何人都可以触发脚本。不仅如此,他们还可以访问脚本编辑器并根据需要修改脚本。为了限制犯规使用,
delete