Границы, когда в строке есть данные, но нет границы, если она пуста - PullRequest
1 голос
/ 31 мая 2019

У меня есть лист, который я хочу динамически добавлять границы для фильтрации результатов. У меня это работает, где он добавляет границы, но когда я выбираю другой фильтр, он сохраняет строки с предыдущими границами данных. Таким образом, если набор данных меньше, он имеет все пустые границы под ним. Как бы это исправить с помощью этого скрипта?

function onEdit(ss) {
  var classeur = SpreadsheetApp.getActiveSpreadsheet();
  var ss = classeur.getActiveSheet(); 
  var range = ss.getRange("A5:a"); // Modified
  range.setBorder(false, false, false, false, false, false);
  var values = range.getValues();
  var offsetRow = range.getRowIndex(); // Added
  for (var i = 0; i < values.length; i++) {
    if (values[i][0]) { // Modified
      ss.getRange("A" + (i + offsetRow) + ":P" + (i + offsetRow))
      .setBorder(true, true, true, true, true, true, "black", 
       SpreadsheetApp.BorderStyle.SOLID_MEDIUM) // Modified
      .setBackground('#FFFFFF');
    }
  }
}

1 Ответ

0 голосов
/ 01 июня 2019

Я не уверен, что полностью понимаю, что вы пытаетесь сделать, но я надеюсь, что это поможет.

function onEdit(e) {
  var sh=e.range.getSheet();
  sh.getRange(1,1,sh.getMaxRows(),sh.getMaxColumns()).setBorder(false, false, false, false, false, false);
  var range = sh.getRange(5,1,sh.getLastRow()-4,1); // Modified
  range.setBorder(false, false, false, false, false, false);
  var values = range.getValues();
  for (var i=0;i<values.length;i++) {
    if (values[i][0]) { // Modified
       sh.getRange(i+5,1,1,16).setBorder(true, true, true, true, true, true, "black",SpreadsheetApp.BorderStyle.SOLID_MEDIUM).setBackground('#FFFFFF');
    }
  }
}

Вы не можете вызвать эту функцию из редактора сценариев, если не предоставите объект события.

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