用于隐藏单元格的Google Spreadsheet脚本编辑器代码

时间:2019-05-03 11:49:01

标签: google-apps-script google-sheets scripting

我正在使用Google表格和脚本编辑器。我正在尝试创建一个函数,如果单元格B4 = 2,则单元格B5; B10和单元格C5; C10将被隐藏在Google电子表格中

1 个答案:

答案 0 :(得分:0)

伪装细胞

这假设B4中的更改来自用户对B4的编辑。

您可以隐藏行,隐藏列和隐藏工作表,但是目前您无法真正隐藏单元格。

这实际上不会隐藏单元格,但是通过使字体颜色和背景色相同,将使阅读变得困难,如果您希望这样做,还可以保护它们。

function onEdit(e) {
  var sh=e.range.getSheet();
  if(sh.getName()!='Sheet2'){return;}
  if(e.range.columnStart==2 && e.range.rowStart==4) {
    e.source.toast('Flag');
    var rg1=sh.getRange('B5:B10');
    var rg2=sh.getRange('C5:C10');
    if(e.value==2) {
      rg1.setFontColor('#ffffff');
      rg2.setFontColor('#ffffff');
      rg1.setBackground('#ffffff');
      rg2.setBackground('#ffffff');
    }else
    {
      rg1.setFontColor('#000000');
      rg2.setFontColor('#000000');
      rg1.setBackground('#ffffff');
      rg2.setBackground('#ffffff');
    }
  }
}

这还将添加和删除保护。这未经测试。

function onEdit(e) {
  var sh=e.range.getSheet();
  var ss=e.source;
  if(sh.getName()!='Sheet2'){return;}
  if(e.range.columnStart==2 && e.range.rowStart==4) {
    e.source.toast('Flag');
    var rg1=sh.getRange('B5:B10');
    var rg2=sh.getRange('C5:C10');
    if(e.value==2) {
      rg1.setFontColor('#ffffff');
      rg2.setFontColor('#ffffff');
      rg1.setBackground('#ffffff');
      rg2.setBackground('#ffffff');
      rg1.protect();
      rg2.protect();
    }else
    {
      rg1.setFontColor('#000000');
      rg2.setFontColor('#000000');
      rg1.setBackground('#ffffff');
      rg2.setBackground('#ffffff');
      var protections=ss.getProtections(SpreadsheetApp.ProtectionType.RANGE);
      for (var i=0;i<protections.length;i++) {
        var protection = protections[i];
        if (protection.canEdit()) {
          protection.remove();
        }
      }
    }
  }
}

range

sheet