如何在电子表格

时间:2015-06-28 16:11:47

标签: google-apps-script google-sheets

我有一张工作表,任何人都可以使用该链接和一个保护特定范围的脚本进行编辑:

var range = playerss.getSheetByName("Sheet1").getRange(8,matchnumber*3-1,12);
var protection = range.protect().setDescription('Bets closed!')
var me = Session.getEffectiveUser();

protection.addEditor(me);
protection.removeEditors(protection.getEditors());
if (protection.canDomainEdit()) {
  protection.setDomainEdit(false);
}

如何删除此保护? setUnprotectedRanges无法正常工作,因为它会覆盖我拥有的任何其他未受保护的范围,也不会删除受保护的范围,这意味着我仍然无法编辑该范围。以下也不起作用:

playerssid = refss.getSheetByName(sname).getRange(i,6).getValue();
playerss = SpreadsheetApp.openById(playerssid);

var sheet = playerss.getSheetByName('Sheet1');
var range = sheet.getRange(8,matchnumber*3-1,12);
var protection = range.protect();

protection.remove();

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

您可以为您的范围命名:

var range = playerss.getSheetByName("Sheet1").getRange(8,matchnumber*3-1,12);
var protection = range.protect().setDescription('Bets closed!').setRangeName("bets-"+matchnumber);
var me = Session.getEffectiveUser();


protection.addEditor(me);
protection.removeEditors(protection.getEditors());
if (protection.canDomainEdit()) {
  protection.setDomainEdit(false);
}

您可以使用以下名称删除保护:

var protections = playerss.getProtections(SpreadsheetApp.ProtectionType.RANGE)
for (var i = 0; i < protections.length; i++) {
  var protection = protections[i];
  if (protection.getRangeName() == "bets-"+matchnumber){
    protection.remove();
  }
}
祝你好运:)