Код редактора сценариев Google Spreadsheet для скрытия ячеек - PullRequest
0 голосов
/ 03 мая 2019

Я использую Google Sheets и использую редактор скриптов. Я пытаюсь создать функцию, в которой если ячейка B4 = 2, то ячейки B5; B10 и ячейки C5; C10 будут скрыты в электронной таблице Google

1 Ответ

0 голосов
/ 03 мая 2019

Камуфлирующие ячейки

Это предполагает, что изменение в 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();
        }
      }
    }
  }
}

Диапазон

листов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...