我想使用受保护的范围来锁定范围,但是通过使用UI我想让用户进行编辑,插入新数据等。我只是想要编辑这些编辑。
我已经想到了一些解决方案但不确定它们会如何影响负载,并且不确定哪个是最佳方向: 取消保护范围并重新保护,提供编辑权限并将其删除。使用java脚本而不是内置的受保护范围功能。这似乎不太可能,但即使脚本是从我的帐户运行的(工作簿都是按照我的帐户设计的,但我有对受保护范围的编辑访问权限)。
任何帮助都会非常感谢,提前谢谢。
脚本背景: 我有公司内部特定项目的工作簿,以及两种方式同步的主工作簿。有一个查找键,只是设施/功能特定的标题,所以我有一个脚本,可以同时更新这两个位置。我还有一个新功能的模板,或者设施特定项目都有自己的模板,我需要用户能够在这些工作簿中添加新工作表,并且这些数据用于更新主工作簿“AllTasks”工作表用于各种查询,但在两个工作簿中我都需要保护范围。
答案 0 :(得分:1)
只有将脚本部署为Web应用程序,才能从您的帐户运行脚本。用户可以访问单独的URL,填写表单,提交等,只要脚本在您的帐户下运行(在部署为Web应用程序时有一个选项),它将插入/更新受保护的范围因为你有编辑权限。用户仍然可以单独进入工作簿并向其中添加工作表(只要他们具有编辑权限),他们就无法触及受保护的范围,除非他们拥有单独的权限。
但如果用户直接从电子表格中运行这些脚本,我认为无法从您的帐户运行。但我认为以上将是最好的解决方案。我没有看到任何可以取消保护/保护范围的脚本,只有表格。
答案 1 :(得分:1)
如果只需要防止意外编辑,您可以设置数据验证规则。然后,UI脚本可以在编辑之前调整这些数据验证规则。
var allowedText = "Yes"
var cell = SpreadsheetApp.getActive().getRange('A1');
var rule = SpreadsheetApp.newDataValidation().requireTextEqualTo(allowedText).build();
cell.setDataValidation(rule);
cell.setValue(allowedText);
这不会防止恶意,也不会防止隐藏,取消隐藏,删除或添加细胞或删除细胞内容,但它可以防止意外覆盖细胞。