Как использовать скрипт приложения Google для автоматического выделения границы ниже, когда значение изменяется - PullRequest
0 голосов
/ 08 мая 2018

Я хочу добавить границу под строкой всякий раз, когда изменяется значение столбца 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);
         }
  }

};

1 Ответ

0 голосов
/ 08 мая 2018

Ваш исходный код немного запутан, много делает с одним оператором 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
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...