Javascript 防止在谷歌电子表格中编辑单元格-谷歌文档脚本

Javascript 防止在谷歌电子表格中编辑单元格-谷歌文档脚本,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我有一个主表,我需要查看和过滤数据。使用=Sheet2!将数据带入工作表!B7语法 问题是,我一直在不小心地编辑母版图纸中的数据,这不会更新原始副本 我想要一个脚本,如果我在主工作表中,它会提醒我,并阻止我编辑单元格。我仍然希望能够过滤数据,这样简单地锁定工作表就可以了 我一直在试图修改这个脚本(由Yuzhy发布),但到目前为止,我还无法让它工作 (我不确定这是否是回答此问题的正确位置,可能是这个位置,也可能是stackexchange/superuser,如果错误,请告知。) 非常感谢您的帮助

我有一个主表,我需要查看和过滤数据。使用
=Sheet2!将数据带入工作表!B7
语法

问题是,我一直在不小心地编辑母版图纸中的数据,这不会更新原始副本

我想要一个脚本,如果我在主工作表中,它会提醒我,并阻止我编辑单元格。我仍然希望能够过滤数据,这样简单地锁定工作表就可以了

我一直在试图修改这个脚本(由Yuzhy发布),但到目前为止,我还无法让它工作

(我不确定这是否是回答此问题的正确位置,可能是这个位置,也可能是stackexchange/superuser,如果错误,请告知。)


非常感谢您的帮助。

通过阅读您的代码,您似乎试图做与您所解释的不同的事情。我看到你试图“修复”这些公式。但是为什么
如果(CellColumn==2)
?您只想保护列
B
,而不是整个“主”表

你能分享一下你的表格结构的样表吗

无论如何,我假设你想在覆盖“主”工作表上的任何内容时发出警告,自动修复公式稍微复杂一点(取决于你的场景),阅读弹出窗口后,点击“撤消”并恢复它就很容易了。但是你真的想自动修复公式,我会在你分享一个电子表格的样本后增强我的代码,因为它有点复杂,并且高度依赖于你的结构

函数onEdit(){
var s=SpreadsheetApp.getActiveSheet();
如果(s.getName()=“主控”)
msgBox(“不要弄乱公式!”);
}
如果您在其他工作表上使用简单的参考公式,那么使用ArrayFormula会更容易,而且可能是一个很好的解决方案,它会在您更改任何单元格(第一个单元格除外)时自动替换回值,但是手动撤消会非常罕见和明显,我认为这不会成为问题。我在你链接的电子表格上做了一个数组公式的例子,请看一看。在
A1
上,我写道:

=ArrayFormula(Sheet1!A1:F20)

现在,例如,如果您在
B2
上意外写入内容,它的值将自动返回。试试看这对你来说是不是一个好办法

更新-截至2012年8月8日,谷歌已经更新了其电子表格,现在允许您拥有“受保护范围”

嘿,山姆,您在吗?对我的回答有什么评论吗?我认为stackoverflow是正确的地方-你问的是代码。嗨,henrique,很抱歉我的回复太晚了。我没能进入计算机,我在google文档中举了一个例子,这是他们的一种方法,让它一开始就不允许你更改数据,或者,一旦警报框出现,撤销刚刚进行的更改?不,没有办法阻止它更改单元格,除非您锁定电子表格,您已经说过这不是一个解决方案。也不可能从脚本中触发真正的“撤消”,只可能让脚本事先知道哪个公式放在哪个单元格中,并自动将其设置回原位。但正如我所说,这并不容易。看一看,我在单元格中放了一、二、三个示例,以显示它们来自哪张表,实际上所有这些单元格中的数据都是不同的,所以如果数据都不同,那么使用数组的方法会起作用-无论哪种方式,我都非常感谢您的帮助!
=ArrayFormula(Sheet1!A1:F20)