Как узнать размер массива, возвращаемого формулой в Google Sheets?
Некоторые гугл-формулы, такие как: Filter, Importrange и т.п., возвращают массив, который может вызвать конфликт диапазонов: "Массив не выведен, поскольку это привело бы к перезаписи данных в диапазоне X". Дабы избежать данной ошибки, есть ли возможность в коде скрипта проверить размер возвращаемого формулой результата? Желательно без "Создать страницу - вызвать там - определить размер - удалить страницу".
Была также идея проверять ячейку функции на "#ССЫЛ!" с помощью .getDisplayValue(), при проставлении рандомного значения в предполагаемый диапазон ее результата. Но реализация с постоянными обращениями к таблице через .setValue(), .getValue() и т.д. выйдет "дорогой" по времени исполнения скрипта.
Прошу подсказать более изящное решение.
Заранее благодарен!
Ответы (1 шт):
Чтобы узнать размер массива, используйте функцию ROWS.
Вот пример использования:
=ROWS(IMPORTHTML("https://ru.wikipedia.org/wiki/%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0", "table"))
Результат выполнения - число 7. На самом деле, обычно заранее известно, сколько первых строк максимально вы могли бы взять из массива результата, если такое ограничение есть на листе. Скажем, у Вас есть всего 5 строк. Тогда можно сразу же ограничить вывод результата с помощью ARRAY_CONSTRAIN, чтобы избежать конфликтов при выводе результата:
=ARRAY_CONSTRAIN(IMPORTHTML("https://ru.wikipedia.org/wiki/%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0", "table"), 5, 10)