Google Sheets Пользовательская функция получает буквальные значения вместо объектов диапазона (постоянная проблема) [дубJavascript

Форум по Javascript
Ответить
Anonymous
 Google Sheets Пользовательская функция получает буквальные значения вместо объектов диапазона (постоянная проблема) [дуб

Сообщение Anonymous »

Я испытываю проблему с пользовательской функцией сценария Google Apps в моем листе Google. Моя пользовательская функция (разработанная для суммы ячеек по цвету фона) последовательно получает значения буквальных клеток (например, «1268.74,, 263.98, ...») в качестве аргументов вместо фактических объектов диапазона (например, C33: C45). Это предотвращает правильное выполнение скрипта. Когда я набираю формулу в листе, вспомогательная подъема инструментов правильно отображает диапазоны (диапазон, ...). Однако после выполнения, журналы скриптов приложений показывают: < /p>

Пропустить недопустимый или пустой аргумент диапазона в индексе 0: 1268,74, 263,98,100, 48,, 231,86, 123,0,0,0,0
(и аналогичные строки для всех аргументов), с помощью-----------------------------------------------------. /> < /blockquote>
Цель: числа сумм в неосвязных диапазонах (например, C33: C45, C48: C54, ...), которые не имеют цвета заполнения (белый /прозрачный фон). < /p>
Формула в листе:
= Sum_uncolored_cells (C33: C45, C48: C54, C57: C64, C67: C70, C73: C90, C93: C97, C100: C108, C111: C116) < /p>
script -код (код. /> javascript < /p>

/**
* Sums the values in multiple ranges that do NOT have a custom fill color.
* It considers both truly transparent backgrounds ("") and default white backgrounds ("#ffffff") as "no fill".
*
* @param {...GoogleAppsScript.Spreadsheet.Range} ranges A list of ranges to sum (e.g., C1:C10, D1:D10).
* @return {Number} The sum of cells without a custom background color across all provided ranges.
* @customfunction
*/
function SUM_UNCOLORED_CELLS(...ranges) {
var sum = 0;
Logger.log('--- Starting SUM_UNCOLORED_CELLS execution ---');

for (var k = 0; k < ranges.length; k++) {
var currentRange = ranges[k];
if (currentRange && typeof currentRange.getValues === 'function') {
// This block should execute, but based on logs, currentRange is not a Range object
Logger.log('Processing range: ' + currentRange.getA1Notation()); // This line is never reached
var values = currentRange.getValues();
var backgrounds = currentRange.getBackgrounds();
for (var i = 0; i < values.length; i++) {
for (var j = 0; j < values[0].length; j++) {
var cellValue = values[j];
var cellBackground = backgrounds[j];
if ((cellBackground === '' || cellBackground === '#ffffff') && typeof cellValue === 'number' && !isNaN(cellValue)) {
sum += cellValue;
}
}
}
} else {
// THIS IS THE PROBLEM SEEN IN MY LOGS:
Logger.log('Skipping invalid or empty range argument at index ' + k + ': ' + currentRange);
}
}
return sum;
}

< /code>
Что я пробовал (все безуспешно): < /p>


[*] Обеспечил точный, авторизованный, авторизованный, и использует правильный jsdoc. /> Обновлен/повторно открыл лист Google лист/браузер. Листы. < /P>
< /li>
Пробое тестирование с помощью одного диапазона (например, = sum_uncolored_cells (c33: c40)), который также не удался с тем же «пропусков недопустимым аргументом». Лист. < /P>
< /li>
(также ранее получил сообщение «только один аргумент» в листе, несмотря на ... диапазоны.) Проблема), которая предотвращает передача ссылок на диапазон в качестве объектов диапазона на пользовательские функции, даже если подпись функции, по -видимому, распознается по подсказке инструментов листа. ячейки, основанные на цвете фона. Поведение: < /p>

Формула вспомогательная подсказка в Google правильно показывает, что функция ожидает (диапазон, ...) аргументы. < /li>
< /ul>
Однако в журнале выполнения скриптов приложения. Лист. /> Обновил страницу листа Google (F5/Ctrl+F5) несколько раз.

закрыл и повторно открыл вкладку Google и браузер. /> переименован в пользовательскую функцию (to sum_uncolored_cells), чтобы заставить Google Sheets повторно индексировать ее подпись. /> < /li>
Попытка получить помощь по официальным каналам: попытался опубликовать на форуме сообщества Google Sheets, но был заблокирован из -за нарушения «политика сообщества». < /p>
< /li>
< /ul нарушение.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... ge-objects
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»