Как узнать размер массива, возвращаемого формулой в 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)
→ Ссылка