2012-11-13 91 views
2

我想使用受保护的范围来锁定范围,但通过使用用户界面,我希望使用户能够进行编辑,插入新数据等。我只是希望编辑是有意的。Google Apps脚本 - 是否可以从脚本更新受保护的范围?

我已经想到了一些解决方案,但我不确定它们将如何影响负载,并且不确定哪个方向是最佳方向: 取消保护范围并重新保护,给予编辑权限并将它们带走。使用java脚本代替内置的保护范围功能。这看起来不太可能,但即使脚本是从我的帐户运行的(工作簿都按照我的帐户的设计工作,但我已编辑访问受保护的范围)。

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

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

回答

1

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

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

+0

感谢您的回应,我认为对我来说,我可能只是使重复隐藏的列和如果列==#恢复列隐藏列的值....不完全喜欢它,但我认为这将适用于我的目的 – Cheney

1

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

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

这不会防止恶意,也不会防止隐藏,取消隐藏,删除或添加的细胞或删除单元格的内容,但它会防止电池的意外覆盖。

相关问题