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

Google apps script 如果单元格包含文本,则保护行,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一张记录一些费用的表,我与某人共享了该表,但它有一列供我审阅,如果该列包含“已批准”,我希望保护该行 如果可能的话,我想用射程保护来保护它 保护已批准的行 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

我有一张记录一些费用的表,我与某人共享了该表,但它有一列供我审阅,如果该列包含“已批准”,我希望保护该行

如果可能的话,我想用射程保护来保护它


保护已批准的行

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); 
      }
    }
  });
}

感谢您的脚本,我对google脚本完全是新手,我尝试使用该脚本,但仍然没有受到保护,我已将工作表名称更改为“Expensis”,如果获得批准,仍然没有受到保护,列为E,我可以看到您使用了r[4],因为excel计数从0开始。有什么建议吗?r[4]是E列,您如何知道它没有受到保护。它不会阻止所有者进行编辑。我已经添加了另一封邮件进行测试,我已经编辑了代码,现在它可以工作了,但是如何在编辑E列后使其自动执行?
var protection=sh.getRange(I+sr,sc,1,sh.getLastColumn()-sc+1)。protect().setDescription('cannotedit approved');//在删除其他用户之前,请确保当前用户是编辑器。否则,如果用户的编辑//权限来自某个组,则脚本会在删除该组时引发异常。var me=Session.getEffectiveUser();保护。加法器(me);protection.removeditors(protection.getEditors());如果(protection.canDomainEdit()){protection.setDomainEdit(false);}
这就是我添加的代码