【问题标题】:Protect specified cell in google Sheet with GAS用 GAS 保护 google Sheet 中的指定单元格
【发布时间】:2021-07-11 23:35:07
【问题描述】:

我有这个:


  var sh = SpreadsheetApp.openById(ssID).getSheetByName('Sheet0');
  var protection = sh.protect().setDescription('BVDATA');
  var me = Session.getEffectiveUser();
  protection.addEditor(me).setUnprotectedRanges([(sh.getRange(sh.getLastRow()+1, 6, sh.getLastRow(),1))]);
  protection.removeEditors(protection.getEditors());

  if (protection.canDomainEdit()){
  protection.setDomainEdit(false);
  }
}

我有一系列单元格,除 F2:F 外均受保护。此代码运行良好,它将自动保护除最后一行以外的所有 Sheet0。但我真正需要的是它只需要为已经输入内容OK(F) 的单元格启用保护,空白单元格和错误单元格仍然可以编辑。我需要如何对其进行编辑以使其按我的意愿工作。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    我相信你的目标如下。

    • 您要保护“F”列的单元格,仅当单元格值为OK时。

    这种情况下,作为一个简单的修改,下面对你的脚本进行修改怎么样?

    发件人:

    protection.addEditor(me).setUnprotectedRanges([(sh.getRange(sh.getLastRow()+1, 6, sh.getLastRow(),1))]);
    

    收件人:

    protection.addEditor(me).setUnprotectedRanges(sh.getRange("F1:F").createTextFinder("^(?!OK).*$").matchEntireCell(true).useRegularExpression(true).findAll());
    
    • 在此修改中,除了具有 OKare retrieved using TextFinder and the retrieved ranges are set forsetUnprotectedRanges` 值的单元格之外的单元格。

    参考资料:

    【讨论】:

    • @Leti 现在,我修改了正则表达式。你能确认一下吗?但是,如果我误解了您的目标,我深表歉意。
    • 现在很慢,我的手机已经停止工作了,hh。有可能它必须在整个单元格 F 范围内找到 OK 导致滞后。有没有什么办法让它看起来在 A: G 可用。
    • @Leti 感谢您的回复。我很高兴你的问题得到了解决。关于你的新问题,我不得不为我糟糕的英语水平道歉。不幸的是,我无法理解你的新问题。但我愿意支持你。那么我可以问你关于你的新问题的细节吗?通过这个,我想试着理解它。
    • 谢谢你的回复,我的英语水平太差了。我这里有 1 个新问题。它将解决上述问题,你能帮我吗:D Protect specified range in google Sheet with GAS
    • @Leti 感谢您的回复。我可以确认你的新问题。从中,我想我也许能够理解你的新问题。所以我提出了一个答案。你能确认一下吗?如果这不是您期望的结果,我再次道歉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多