如何使用 Google 应用程序脚本在值更改时自动在下方添加边框线

How to use Google app script to automatically border line below When Value Changes

我想在 C 列值更改时在该行下方添加一条边框线。

好久没接触宏了,这是我自己写的一个脚本,但是没有达到预期的效果。有人知道问题出在哪里吗?谢谢!

function underline() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  for (var i = 1; i < 10; i++) {
    if (sheet.getRange(spreadsheet.getCurrentCell().getRow() + i, 3) != sheet.getRange(spreadsheet.getCurrentCell().getRow() + i+1, 3)) {
        sheet.getRange(spreadsheet.getCurrentCell().getRow() + i, 1, 1, sheet.getMaxColumns()).activate();
        spreadsheet.getActiveRangeList().setBorder(null, null, true, null, null, null, '#000000', SpreadsheetApp.BorderStyle.SOLID);
         }
  }

};

您的原始代码有点复杂,用一个 if 语句做很多事情。我冒昧地将复杂的部分分成一个不同的函数,findOriginal(cell)。下面的代码添加一行:

function findOriginal(cell) { //offsets given cell until finds new content
  while (cell.getValue() == cell.offset(1,0).getValue()) cell = cell.offset(1,0);
  return cell;
}

function underline() {
  var spreadsheet = SpreadsheetApp.getActive(),
      cell = spreadsheet.getSelection().getCurrentCell();

  cell = findOriginal(cell);

  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(cell.getRow(), 1, 1, sheet.getLastColumn()) // setting the range to border
  .setBorder(null, null, true, null, null, null, 
             '#000000', SpreadsheetApp.BorderStyle.SOLID); // you wrote this line
};