Почему неправильно считается количество цветных ячеек в Google Sheets?

Здравствуйте. Нашел в интернете скрипт как подчитать количество залитых ячеек диапазона определенного цвета в google sheets. Создаю функцию countColoredCells(countRange, colorRef) в Apps Script, где countRange по сути диапазон, в котором идет подсчет ячеек цвета colorRef:
function countColoredCells(countRange,colorRef) {
  var activeRange = SpreadsheetApp.getActiveRange();
  var activeSheet = activeRange.getSheet();
  var formula = activeRange.getFormula();

  var rangeA1Notation = formula.match(/\((.*)\;/).pop().trim();
  var range = activeSheet.getRange(rangeA1Notation);
  var bg = range.getBackgrounds();
  var values = range.getValues();

  var colorCellA1Notation = formula.match(/\((.*)\;/).pop().trim();
  var colorCell = activeSheet.getRange(colorCellA1Notation);
  var color = colorCell.getBackground();

  var count = 0;

  for(var i=0;i<bg.length;i++)
    for(var j=0;j<bg[0].length;j++)
      if( bg[i][j] == color )
        count=count+1;
  return count;
};

Но почему-то неверно считает. Подсчет идет по цвету, который первый в диапазоне countRange, а colorRef вообще не используется. Как исправить скрипт?
  • Вопрос задан
  • 789 просмотров
Решения вопроса 1
ProgrammerForever
@ProgrammerForever Куратор тега Google Sheets
Учитель, автоэлектрик, программист, музыкант
Тут копипаста и ошибка. Берёт также 1й аргумент, а не 2й
var colorCellA1Notation = formula.match(/\((.*)\;/).pop().trim();

Надо:
var colorCellA1Notation = formula.match(/\(.*?\;(.+)\)/).pop().trim();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы