繁体   English   中英

Google 脚本锁定单元格

[英]Google Script Lock Cells

我正在尝试实现一个脚本,当条件为真时锁定特定范围的单元格。 这是我的文档的链接:

https://docs.google.com/spreadsheets/d/1XShGxlz2fA2w2omth-TvYc7cK0nXvVMrhwRKafzVjOA/edit?usp=sharing

基本上,我与一群人共享此文档,因此他们在 B 列中填写他们的邮件地址,并在 C 列中放置一个数字 1,这样它会为每个插槽增加我的计数器。 我想要做的是在每个插槽已满时锁定每个插槽,以便其他人无法再编辑这些插槽,但问题在于我的 if 语句if (cell1 == 10) 即使没有实现 if 条件,范围也始终被锁定。 这是我的代码:

function onOpen() {


  var ss = SpreadsheetApp.getActive();
  var source =         SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");

 var cell=60;
 var cell1 = source.getRange("G2").getValue();

 if (cell1 == 10){

// Protect range B2:B11, then remove all other users from the list of editors.
var ss = SpreadsheetApp.getActive();
var range = ss.getRange('B2:B11');
var protection = range.protect().setDescription('Sample protected range');

// Ensure the current user is an editor before removing others. Otherwise, if the user's edit
// permission comes from a group, the script will throw an exception upon removing the group.
var me = Session.getEffectiveUser();
protection.addEditor(me);
protection.removeEditors(protection.getEditors());
if (protection.canDomainEdit()) {
  protection.setDomainEdit(false);
}

  }


}

正如安迪在评论中所说,如果单元格 G2 不等于 10,您需要明确删除保护。(此代码删除所有保护)。

阅读保护类页面,您从中获得了片段,我无法了解编辑器权限将影响您的需求的方式,因此如果其他人是编辑器,此脚本将起作用。 如果您不希望它们成为编辑器,则必须添加相关代码。

function onOpen() {

  var ss = SpreadsheetApp.getActive();
  var source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  var cell = source.getRange("G2").getValue();
  var range = ss.getRange('B2:B11');

  if (cell == 10) {

    // Protect range B2:B11 if cell 'G2' = 10
    var protection = range.protect().setDescription('Sample protected range');
    Logger.log

  } else {

    // Remove protection if cell 'G2' is anything other than 10
    var protections = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE);

    for (var i = 0; i < protections.length; i++) {
      var protection = protections[i];
      protection.remove();
    }
  }  
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM