Google Apps脚本 - 是否可以仅通过GoogleAppScript更改表格中的某些单元格?

时间:2016-11-24 21:02:38

标签: google-apps-script google-sheets

我在Google SpreadSheet中制作目录。我的spreasheet有一个表,用户可以在其中添加信息。该表是通过脚本动态创建的,该脚本从数据库表中获取数据。

用户可以编辑表格中的某些单元格,然后单击将更改保存回数据库表格的按钮。

我想限制他可以手动编辑的单元格,但是我无法保护这些单元格,因为有一个脚本可以修改它(因为该表是通过脚本动态生成的)。

有没有办法保护单元格,以便只能通过脚本进行编辑?

我不能只保护某些范围,因为运行修改单元格的脚本的用户。如果我保护范围,用户无法手动或使用脚本更改范围。我想要一种保护范围免受手动输入的方法,但允许用户运行的脚本(而不是电子表格所有者)更改单元格。

谢谢

2 个答案:

答案 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);

现在没有人可以手动编辑范围。所有公式等都可以正常工作。

但是,如果用户具有编辑权限,则他可以轻松地从系统菜单中删除验证。因此,这并非万无一失。