与细胞在同一条线上的边界

时间:2017-11-19 12:24:43

标签: google-apps-script google-sheets

我有一个脚本在非空时创建单元格边框:

function checkRange2(ss) {
var classeur = SpreadsheetApp.getActiveSpreadsheet();
var ss = classeur.getActiveSheet(); 

var range = ss.getRange("B5:B100");

range.setBorder(false, false, false, false, false, false);
var values = range.getValues();
for (var i = 0; i < values.length; i++) {
  for (var j = 0; j < values[i].length; j++) {
    if (values[i][j] !== "") {
      range.getCell(i + 1, j + 1).setBorder(true, true, true, true, true, true)
      .setBackground('#FECB8D');
    }
  }
 }
}

我希望当单元格B5例如包含文本时,范围B5:E5是带边框的。还有其他人也排队。有可能吗?

亲切。

1 个答案:

答案 0 :(得分:0)

这些修改怎么样?我不知道我是否能理解你想做什么。如果我误解了你的问题,请告诉我。我想修改它们。

在此修改过的脚本中,首先,它会检索B5:E100的值。当字符串包含在列B中时,边框将被赋予行的列B到列E的单元格。例如,当单元格B5具有字符串时,&#34; B5:E5&#34;被边界包围着。

修改要点:

  • 当评估列B从B5:B100范围内检索的值时,可以使用一次&#34; for循环&#34;来完成if (values[i][0]) {
    • 在此修改后的脚本中,使用了B5:E100的范围。检索此范围的值也可以由if (values[i][0]) {进行评估。
  • 如果要使用B5:E5范围的边框,可以使用range.setBorder()来实现此目的。
    • 在脚本中,使用通过添加offsetRow获得的a1Notation定义范围。

修改样本:

function checkRange2(ss) {
  var classeur = SpreadsheetApp.getActiveSpreadsheet();
  var ss = classeur.getActiveSheet(); 
  var range = ss.getRange("B5:E100"); // 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("B" + (i + offsetRow) + ":E" + (i + offsetRow)).setBorder(true, true, true, true, null, null) // Modified
      .setBackground('#FECB8D');
    }
  }
}

注意:

  • 如果您想为所有单元格提供边框,请使用.setBorder(true, true, true, true, true, null)
    • 在您的情况下,边框被赋予一行。因此setBorder()的最后一个参数可以使用null

参考:

如果我误解了你的问题,我很抱歉。