Как посчитать цвет текста в диапазоне электронных таблиц Google? - PullRequest
0 голосов
/ 29 марта 2020

У меня есть следующий код в скрипте электронных таблиц Google.

function countTextColor(inputColor, inputRange) {
  var inputRangeCells = SpreadsheetApp.getActiveSpreadsheet().getRange(inputRange);
  return inputRangeCells.getFontColor();
}

Если я выполню это так:

=countTextColor("A1:E1")

Я получу цвет первой ячейки в диапазоне.

Но моя цель состоит в том, чтобы l oop через диапазон и подсчитать цвет шрифта (specifeid в качестве входного параметра) всех ячеек. Добавление следующего кода, похоже, не работает:

var count = 0;
for(var r = 0; r < inputRangeCells.length; r++) {    
    var inputCell = inputRangeCells[r];
    if(inputCell.getFontColor() == inputColor) {
        count++;
    }
}

Как l oop диапазон и получить значение цвета каждой ячейки?

1 Ответ

1 голос
/ 29 марта 2020

Вы не должны l oop над классом range. range не повторяется. getColors из диапазона и итерации по цветам:

/**
 * @param {string} inputColorStr color to check #ffffff
 * @param {string} inputRangeStr range to check A1:F2
 * @customfunction
 */
function countTextColor(inputRangeStr, inputColorStr = '#ff000000') {
  const inputRange = SpreadsheetApp.getActive()
    .getActiveSheet()
    .getRange(inputRangeStr);

  return inputRange
    .getFontColorObjects()
    .flat(2)
    .reduce(
      (count, color) =>
        count + Number(color.asRgbColor().asHexString() === inputColorStr),
      0
    );
}

Использование:

=COUNTTEXTCOLOR("A1:F1","#ff0000")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...