我已经构建了一个模板表,我将每周复制一次。我注意到,当我复制它时,没有受保护的范围与它一起被复制。是否可以使用Google Apps脚本将完全相同的受保护范围复制到重复的工作表中?每周都会节省很多时间。
答案 0 :(得分:1)
我找到了一个复制具有权限的工作表的解决方案:
它看起来已经解决了,虽然我正忙于另一个目前隐藏权限列的问题。
此致
答案 1 :(得分:0)
Protection class可用于保护工作表中的各种范围,甚至可以更好地保护整个工作表,然后取消保护需要输入的特定范围。
答案 2 :(得分:0)
这里是经过调整的代码,将从上面提示您输入要复制的工作表的名称以及您希望的新名称:
function duplicateSheetWithProtections() {
var ui = SpreadsheetApp.getUi();
var oldSheetName = ui.prompt('Sheet to Copy?');
var newSheetName = ui.prompt('New Sheet Name?');
var ss = SpreadsheetApp.getActiveSpreadsheet();
sheet = ss.getSheetByName(oldSheetName.getResponseText());
sheet2 = sheet.copyTo(ss).setName(newSheetName.getResponseText());
var protections = sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (var i = 0; i < protections.length; i++) {
var p = protections[i];
var rangeNotation = p.getRange().getA1Notation();
var p2 = sheet2.getRange(rangeNotation).protect();
p2.setDescription(p.getDescription());
p2.setWarningOnly(p.isWarningOnly());
if (!p.isWarningOnly()) {
p2.removeEditors(p2.getEditors());
p2.addEditors(p.getEditors());
// p2.setDomainEdit(p.canDomainEdit()); // only if using an Apps domain
}
}