我找遍了所有地方,似乎GAS还没有赶上谷歌电子表格。有没有一种暴力方法来在一张纸上的某些范围内设置保护?(用所有公式制作一张受保护的工作表并引用它们对我没有帮助。)
我通过谷歌找到了这个:https://code.google.com/p/google-apps-script-issues/issues/detail?id=1721
我甚至在底部做了评论。(与其说是有用的东西,不如说是抱怨。)但在我上面的人发布了这段代码:
//Function to Protect Target Sheet
function ProtectTargetSheet() {
//Enter ID for each Worksheet
var IDs = ["Sheeet_1", "Sheet_2"]
//Enter Page to protect, in order of WorkSheets
var Sheet_names = ["Page_1", "Page_2"]
//For each sheet in the array
for ( i = 0; i < IDs.length; i ++) {
//id of sheet
var sheet = IDs[i]
//activate dedicated sheet
var ActiveSheet = SpreadsheetApp.openById(sheet)
//Find last row and column for each sheet
var LastRow = ActiveSheet.getSheetByName(Sheet_names[i]).getLastRow();
var LastCol = ActiveSheet.getSheetByName(Sheet_names[i]).getLastColumn();
//Name of protectSheet
var Name = "Protect_Sheet";
//Range for Protection
var Named_Range = ActiveSheet.getSheetByName(Sheet_names[i]).getRange(1, 1, LastRow, LastCol);
//Impletment Protect Range
var protected_Range = ActiveSheet.setNamedRange(Name, Named_Range);
}
}我不明白这怎么能在共享时为范围提供保护。看起来它只是创建了一个命名范围。他确实说过要先手动设置权限。但我不明白他到底是什么意思。
无论如何,我希望到目前为止,有人已经找到了一种方法来做到这一点,直到谷歌将GAS与其对应产品同步。
我的愿望是,通过100%的代码,在工作表中选择一个范围,在电子表格中,这样当我将整个电子表格分享给一个人时,他或她就不能编辑这个范围。他们必须能够编辑该工作表中的其他部分。只是不是那个范围。手动完成这项工作很容易,但当必须创建数百个电子表格时,能够通过GAS完成这项工作将是有帮助的。
谢谢。
发布于 2013-08-12 12:49:46
你问题的一部分是关于保护床单的。请看这里:setProtected(protection)
至于以编程方式保护范围编号。但是,您可以保护工作表,不需要在同一电子表格中,然后创建一个onEdit触发器,该触发器将用原始源数据替换“受保护”区域中的任何更改。
如下所示:
function onLoad() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var protected = ss.getSheets()[1].getRange("A1:B2").getValues(); //You could use openByID to get from a different ss
var target = ss.getSheets()[0].getRange("A1:B2").setValues(protected);
}
function onEdit(){
onLoad();
}每次对电子表格进行更改时,脚本都会根据您指定的范围重写工作表中的数据。
发布于 2013-09-17 04:44:53
我找到的最简单的方法是使用数据验证:也就是说,编写一个脚本来检查每个要“保护”的单元格,并创建和应用一个验证规则,强制输入现有内容并拒绝任何其他内容。当然,这也意味着你已经设计好了你的电子表格,所有输入的数据都放在一个或多个表格上,与那些嵌入了公式的表格分开。在这些页面上,你可以使用普通的工作表保护。
发布于 2014-08-16 08:56:07
如果您要发送同一张纸的100份副本。然后创建一个模板工作表,手动保护其中的范围,并发送模板的副本。它将保留保护。
很抱歉,但正如其他人所说,没有脚本方法来设置子表级别的保护。
https://stackoverflow.com/questions/18177404
复制相似问题