如果单元格包含文本,则保护行

时间:2020-02-29 22:05:27

标签: google-apps-script google-sheets

我有一个表格来记录一些费用,我与某人共享了该表格,但其中有一栏供我审核,如果列包含“已批准”,我想保护该行。

我想尽可能使用范围保护来保护它

Sheet preview

1 个答案:

答案 0 :(得分:1)

保护批准的行

function protectApprovedRows() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('name');
  var sr=2;
  var sc=1;
  var vs=sh.getRange(sr,sc,sh.getLastRow()-sr+1,sh.getLastColumn()-sc+1).getValues();
  var me = Session.getEffectiveUser(); 
  vs.forEach(function(r,i){
    if(r[4]=="Approved") {
      var protection=sh.getRange(i+sr,sc,1,sh.getLastColumn()-sc+1).protect();
      protection.addEditor(me); 
      protection.removeEditors(protection.getEditors()); 
      if (protection.canDomainEdit()) { 
        protection.setDomainEdit(false); 
      }
    }
  });
}

Range.Protect()