修复我当前的边框代码 - 在边框中包含标题 - 使所有行的边缘边框保持不变

问题描述 投票:0回答:1

我对水平线及其位置感到满意。所有边框均基于 C/D 列 (3/4),该列在 C-J 上方添加线条,然后在该行上添加一条垂直线。

我想将垂直边框扩展到正在使用的单元格的所有行。让它看起来更整洁,并包含与其他标题相同的边框。

目前我有这段代码 - 然而我对任何类型的编码都是新手,并设法通过一些运气和大量测试到达这里。我还想删除第 36 行上的行,我不知道它是如何到达那里或为什么它在那里。

任何帮助将不胜感激。

目前的工作表

function onEdit(e) {
  if (e.source.getActiveSheet().getSheetName() == "Jobs") {
    var sheet = e.source.getActiveSheet();
    sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).setBorder(null, null, null, null, false, false);
    var values = sheet.getRange(3, 4, sheet.getLastRow() - 1, 1).getValues();
    var rangeList = values.reduce(function(ar, e, i) {
      if (i > 0 && values[i - 1][0] != e[0] && e[0] != "") {
        ar.push("C" + (i + 3) + ":J" + (i + 3));
      }
      return ar;
    }, [])
    rangeList.push(sheet.getRange(sheet.getLastRow(), 1, 1, sheet.getLastColumn()).getA1Notation());
    sheet.getRangeList(rangeList).setBorder(true, true, null, true, false, false, "black", SpreadsheetApp.BorderStyle.SOLID_THIN);
  }
}
google-sheets google-apps-script
1个回答
0
投票

一致的边框

虽然我不完全确定我能理解您的预期结果,但编写下面的脚本是为了检查您在问题中指定的条件,例如为标题部分提供相同的边框设置并删除第 36 行上不需要的边框,最后,在具有占用单元格的所有行上设置相同的边框样式。

代码

function onEdit(e) {
  if (e.source.getActiveSheet().getSheetName() == "Jobs") {
    var sheet = e.source.getActiveSheet();
    
    sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).setBorder(null, null, null, null, false, false);
    var lastRow = sheet.getLastRow();
    
    for (var row = 3; row <= lastRow; row++) {
      var range = sheet.getRange(row, 3, 1, 8);
      if (range.getValues()[0].some(cell => cell !== "")) {
        range.setBorder(true, true, null, true, false, false, "black", SpreadsheetApp.BorderStyle.SOLID_THIN);
      }
    }
  }
}

输出示例

output

© www.soinside.com 2019 - 2024. All rights reserved.