我到处寻找,看起来GAS还没有赶上Google Spreadsheet。是否有蛮力方法在纸张的某些范围内设置保护..? (使用所有公式制作受保护的纸张并提及它们对我没用。)
我是通过谷歌发现的: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);
}
}
我不知道这可以如何在共享时为范围提供保护。它似乎只会创建一个命名范围。他确实说要先手动设置权限。但我无法确定他究竟是什么意思。
无论如何,我希望有人找到一种方法来实现这一目标,直到Google与其对手同步GAS。
我的愿望是,通过100%代码,在电子表格中选择工作表中的范围,并使其成为当我将整个电子表格分享给某个人时,他或她无法编辑该范围。该表中还有其他部分必须能够编辑。只是不是那个范围。这很容易手动执行,但是当必须创建100个电子表格时,能够通过GAS完成此操作会很有帮助。
感谢。
答案 0 :(得分:1)
您的部分问题涉及保护工作表。请看这里: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();
}
每次对电子表格进行更改时,脚本都会重写您指定范围的工作表中的数据。
答案 1 :(得分:1)
我发现最简单的方法是使用数据验证:即编写一个脚本,检查每个单元格是否“受保护”,并创建并应用验证规则,强制输入现有内容并拒绝其他任何内容。 [当然,这也意味着您已经设计了电子表格,使得所有输入的数据都在片材或工作表上,与嵌入了公式的数据分开。在这些上你使用普通的纸张保护。]
答案 2 :(得分:0)
如果您要发送100张同一张纸的副本。然后创建模板工作表,手动保护其中的范围并发送模板的副本。它将保留保护。
很抱歉,但正如其他人所说,没有脚本方法在子表级别设置保护。
答案 3 :(得分:0)
根据2015年2月19日发布的Control protected ranges and sheets in Google Sheets with Apps Script,现在可以保护Google表格范围。
来自https://developers.google.com/apps-script/reference/spreadsheet/protection
班级保护
访问和修改受保护的范围和工作表。受保护的范围可以 保护静态范围的单元格或命名范围。受保护的 表格可能包括未受保护的区域。对于使用的电子表格 旧版Google表格,请使用
PageProtection class代替。clusterProvider = new H.clustering.Provider({});