我在Google SpreadSheet中制作目录。我的spreasheet有一个表,用户可以在其中添加信息。该表是通过脚本动态创建的,该脚本从数据库表中获取数据。
用户可以编辑表格中的某些单元格,然后单击将更改保存回数据库表格的按钮。
我想限制他可以手动编辑的单元格,但是我无法保护这些单元格,因为有一个脚本可以修改它(因为该表是通过脚本动态生成的)。
有没有办法保护单元格,以便只能通过脚本进行编辑?
我不能只保护某些范围,因为运行修改单元格的脚本的用户。如果我保护范围,用户无法手动或使用脚本更改范围。我想要一种保护范围免受手动输入的方法,但允许用户运行的脚本(而不是电子表格所有者)更改单元格。
谢谢
答案 0 :(得分:0)
使用独立脚本创建一个使用所有者权限运行的Web应用程序,而不是使用有界脚本。这是因为有界脚本运行了执行脚本的用户的权限。
为了帮助用户执行webapp,我认为您可以创建一个用户对话框或侧面板,显示指向webapp的链接。
答案 1 :(得分:0)
我已通过以下步骤解决了这个问题
printsht.getRange(“ A1:Q22”)。setDataValidation(null);
进行范围内的任何处理
printsht.getRange(1,1,22,17).setValues(prin);
所有处理和setValues等之后
//打印后进行块编辑 var cell = printsht.getRange(“ A1:Q22”); var rule = SpreadsheetApp.newDataValidation()。requireTextEqualTo('$$')。setAllowInvalid(false).setHelpText(“请勿在打印纸中进行编辑”).build(); cell.setDataValidation(rule);
现在没有人可以手动编辑范围。所有公式等都可以正常工作。
但是,如果用户具有编辑权限,则他可以轻松地从系统菜单中删除验证。因此,这并非万无一失。