5

我想使用受保护的范围来锁定范围,但是通过使用 UI,我想让用户能够进行编辑、插入新数据等。我只是希望编辑是经过深思熟虑的。

我已经想到了一些解决方案,但不确定它们将如何影响负载,并且不确定哪个是最佳方向:取消保护范围并重新保护,授予编辑权限并将其删除。使用 java 脚本而不是内置的受保护范围功能。这似乎不可能,但即使脚本是从我的帐户运行的也可以工作(工作簿都按照我的帐户的设计工作,但我有对受保护范围的编辑权限)。

任何帮助将不胜感激,在此先感谢。

脚本背景:我有公司内部特定项目的工作簿,还有一个主工作簿,它以两种方式同步。有一个查找键,只是设施/功能特定的标题,所以我有一个脚本可以同时更新两个位置。我还有一个新功能的模板,或者每个设施特定的项目都有自己的模板,我需要用户能够在这些工作簿中添加一个新工作表,并且这些数据用于更新主工作簿“AllTask​​s”工作表用于各种查询,但在两个工作簿中我都需要有受保护的范围。

4

2 回答 2

1

仅当您将脚本部署为 Web 应用程序时,才能从您的帐户运行脚本。用户将转到单独的 URL,填写表格,提交等,只要脚本在您的帐户下运行(部署为 Web 应用程序时有一个选项),它将插入/更新受保护的范围因为你有编辑权限。用户仍然可以单独进入工作簿并向其中添加工作表(只要他们具有编辑权限),他们只是不能触摸受保护的范围,除非他们对这些范围具有单独的权限。

但是,如果用户将直接从电子表格运行这些脚本,我认为不可能从您的帐户运行。但我认为以上将是最好的解决方案。无论如何,我没有看到任何可以取消保护/保护范围的脚本,只有工作表。

于 2012-11-13T18:20:27.080 回答
1

如果只需要防止意外编辑,您可以设置数据验证规则。然后,UI 脚本可以在编辑之前调整这些数据验证规则。

var allowedText = "Yes" var cell = SpreadsheetApp.getActive().getRange('A1'); var rule = SpreadsheetApp.newDataValidation().requireTextEqualTo(allowedText).build(); cell.setDataValidation(rule); cell.setValue(allowedText);

这不会防止恶意,也不会防止隐藏、取消隐藏、删除或添加单元格或删除单元格的内容,但可以防止意外覆盖单元格。

于 2014-06-19T13:48:54.413 回答