当行有数据时为边框,如果为空则为无边框

时间:2019-05-31 18:40:42

标签: google-apps-script google-sheets

我有一张表格,我想动态添加边框以过滤结果。我在添加边框的地方工作,但是当我选择另一个过滤器时,它使行与以前的数据边框保持一致。因此,如果数据集较小,则其下将具有所有空白边框。我将如何使用此脚本解决此问题?

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 :(得分:0)

我不确定我是否完全理解您的尝试,但希望对您有所帮助。

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');
    }
  }
}

除非提供事件对象,否则无法从脚本编辑器调用此函数。