Я испытываю проблему с пользовательской функцией сценария 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
Google Sheets Пользовательская функция получает буквальные значения вместо объектов диапазона (постоянная проблема) [дуб ⇐ Javascript
Форум по Javascript
1751415564
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[i][j];
var cellBackground = backgrounds[i][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 нарушение.>
Подробнее здесь: [url]https://stackoverflow.com/questions/79686368/google-sheets-custom-function-receiving-literal-values-instead-of-range-objects[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия