如何在只读电子表格中运行Google Apps脚本?

时间:2018-08-28 08:17:33

标签: google-apps-script google-sheets triggers

我是Google Apps脚本世界的新手,我发现自己遇到了问题。我创建了一个作为onOpen()触发器运行的脚本,但是如果电子表格文件是只读的,则此脚本不会运行。我读到它是只读的,它无法运行。有没有办法解决这个问题?

我授予了编辑权限,阻止了脚本中的所有单元格。我希望人们看不到该脚本,因为这使他们可以重新运行该脚本并在工作表上加“力”。如果我创建API,可以将工作表保持只读状态吗?

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

所有脚本必须在某人的授权下运行。在谁的权限下运行脚本,该脚本确定脚本可以访问谁的数据以及该权限是否可以运行该脚本。

授权概念:

  • 从脚本编辑器运行的脚本在user at the keyboard ¹的授权下运行。自定义函数以匿名方式运行。可安装的触发器在用户创建的触发器下运行。 WebApp将根据部署期间选择的选项运行。

  • 在以下限制条件下,简单触发器会自动匿名触发²

      

    该脚本必须绑定到Google表格,幻灯片,文档或表单文件,或者是扩展这些应用程序之一的附件。如果以只读方式打开文件,则脚本不会运行(查看(或注释)模式。他们无法访问需要授权的服务。

  • 必须在设置触发器的用户³下设置和运行可安装触发器。

      

    如果以只读(查看或注释)模式打开文件,它们将不会运行。可安装触发器始终在创建它们的人的帐户下运行。给定帐户无法看到从另一个帐户安装的触发器,即使尽管第一个帐户仍可以激活这些触发器。

  • 您可以限制对电子表格,工作表或范围的访问

扣除额:

A先生(所有者)有一个电子表格。该电子表格有两个工作表1.主工作表和2.工作表(工作表受保护并隐藏,仅可由Mr.A编辑)。它还具有以下脚本:1.一个简单的触发脚本(onEdit),用于将时间戳记设置为每个已编辑单元格中的注释。 2.已安装的触发器(AonEdit()),可在每次编辑时从MrA的电子邮件中发送电子邮件。 3.一个函数(summary())用于创建主要工作表摘要,并将用户帐户中的电子邮件发送给自己(通过脚本编辑器手动运行)。 4.保护机密表(protect())的功能5.简单的onOpen()触发日志记录Someone opened your sheet。并且他授予B先生(编辑)的编辑权限。 B先生能做什么?

  • B先生在主工作表中编辑单元格A1:

    • 简单触发onEdit被匿名触发,并在A1上设置了一个时间戳记。
    • 可安装触发器AonEdit在A先生的权限下被触发,并且从A先生的gmail发送了一封电子邮件。B先生不知道这是什么,尽管他可以看到脚本本身。
  • B先生是一个狡猾的人,他成功地隐藏了秘密表并尝试对其进行修改:

    • B先生无法修改机密表,即使他可以完全取消隐藏/查看机密表
  • B先生找到了脚本编辑器,并尝试运行功能summary()。此功能需要gmail权限。 B先生的gmail帐户已获得授权[¹]的问候,以便该功能可以运行。 B先生授权,摘要是从B先生的gmail帐户发送的。

  • B先生巧妙地修改了protect()功能,以授予自己对机密文件的编辑访问权限。键盘上的用户是Mr.B。 B先生的权限还不够。他遇到以下错误:

      

    您正在尝试编辑/删除受保护的单元格或对象。如果需要编辑,请与电子表格所有者联系以取消保护。

  • A先生(所有者)知道B先生的这种未经授权的访问尝试,他限制了对所有工作表的编辑访问。现在,即使Mr.B有权编辑电子表格,他也无法编辑电子表格中的任何工作表。只要他打开工作表,就会触发简单的onOpen()记录Someone opened your sheet。但是,B先生甚至可以立即运行功能summary()(如果他具有脚本编辑器链接)以获取工作表摘要。

解决方案:

  

因为这使他们可以重新运行脚本并在工作表上加电。

     
    

具有写权限的用户可以输入脚本并修改权限。

  

如上所述,这是不可能的。即使在脚本级别,也保留图纸/范围编辑权限。但是,潜在的漏洞是AonEdit()函数。如果B先生知道A先生已为AonEdit()函数设置了可安装的触发器,则他可以将AonEdit()函数修改为protection.remove(),这将在A先生的权限下运行(可安装的触发器在创建它的人的下面运行),因此保护被删除。

  

我希望人们看不到脚本。

您可以使用独立脚本。您还可以在独立脚本中使用可安装的触发器[³],但要受这些触发器的限制(例如,它将仅在您的授权下运行)。由于脚本未绑定到电子表格,因此电子表格上的编辑者对该脚本没有编辑/查看权限。另外,您可以发布插件 / webapp