Ошибка "TypeError: Cannot read properties of null (reading 'pop')" в Google Apps Script означает, что вы пытаетесь вызвать метод "pop()" на переменной, которая имеет значение null.
В вашем случае, скорее всего, проблема возникает в этих строках:
var countRangeAddress = activeRng.getFormula().match(/=SUM\((.*?)\)/).pop().trim();
var sumValues = activeSht.getRange(countRangeAddress).getValues();
var colorRefAddress = activeRng.getFormula().match(/=COUNTIF\((.*?),/).pop().trim();
var backGround = activeSht.getRange(colorRefAddress).getBackground();
Здесь код пытается найти фрагмент формулы "=SUM(...)" и "=COUNTIF(...)", извлечь из них адрес диапазона и цвет ячейки соответственно.
Причина ошибки:
Если в выбранной ячейке нет формулы с "=SUM" или "=COUNTIF", то метод .match() вернет null, и вызов pop() на null приведет к ошибке.
Решение:
Проверить наличие формул:
Убедитесь, что ячейка, на которой запускается скрипт, содержит формулы "=SUM(...)" и "=COUNTIF(...)", где вместо "..." указаны диапазоны ячеек.
Обработка null:
Перед вызовом pop() необходимо проверить, вернул ли match() значение, отличное от null. Можно использовать условный оператор:
var matchSUM = activeRng.getFormula().match(/=SUM\((.*?)\)/);
if (matchSUM) {
var countRangeAddress = matchSUM.pop().trim();
// ... остальной код ...
} else {
// Обработка случая, когда формула не найдена, например:
Logger.log("Формула SUM не найдена в выбранной ячейке");
return; // или выдать другое сообщение об ошибке
}
// Аналогичная проверка для COUNTIF
var matchCOUNTIF = activeRng.getFormula().match(/=COUNTIF\((.*?),/);
if (matchCOUNTIF) {
var colorRefAddress = matchCOUNTIF.pop().trim();
// ... остальной код ...
} else {
// Обработка случая, когда формула не найдена
Logger.log("Формула COUNTIF не найдена в выбранной ячейке");
return; // или выдать другое сообщение об ошибке
}
Это предотвратит ошибку и позволит скрипту продолжить работу даже если формулы не найдены.
Важно:
Адаптируйте код под ваши конкретные формулы и структуру таблицы.
Перед использованием скрипта протестируйте его на тестовых данных.
Надеюсь, это поможет! Если у вас есть еще вопросы, не стесняйтесь спрашивать.