Введение
В редакторе таблиц есть возможность создания своих функций с помощью плагина Пользовательские функции.
Такая возможность есть только в редакторе таблиц.
Вкладка Плагины в десктопной версии:

Пользовательские функции доступны в десктопной версии и в онлайн версии редактора и поддерживают язык программирования JavaScript. Сама функция работает с примитивными типами данных такими как: Number, String, Array, Boolean, которые передаются в аргументы функции. Создавать функции можно с любым количеством аргументов. Возвращаемый результат переводится во внутренний тип данных ячейки (например, если вернуть A1, то будет преобразование на значение ячейки).
Диапазоны данных при передаче в аргументы оборачиваются в квадратные скобки « [] ».
При сохранении созданная функция проверяется на время выполнения (должно быть не более 5 секунд), при этом входящие параметры не учитываются. Для просмотра выводимого значения можно использовать консоль браузера. Для онлайн версии нажмите клавишу F12, для десктопной версии выполните операции, описанные в статье Как включить режим отладки макросов ↗.
Для десктопной версии созданные функции сохраняются локально, поэтому ими можно пользоваться в любом документе редактора таблиц на этом устройстве. Для онлайн версии созданные функции сохраняются локально для каждого браузера (если функция была создана в документе, открытом в браузере Яндекс, то, открыв этот документ в браузере Google Chrome, вы не увидите созданную функцию).
- Созданные функции не могут быть вызваны из мастера формул;
- У функций нет доступа к API редактора;
- Функции могут быть как синхронными, так и асинхронными (с возможностью внешних запросов);
- Функции нельзя использовать в макросах.
Создание пользовательской функции
Для создания функции выполните следующие шаги.
1. На вкладке Плагины нажмите кнопку
Пользовательские функции:

2. В окне Пользовательские функции нажмите кнопку Создать.
В списке функций (левая колонка) отобразится функция с префиксом FN_ и порядковым номером. Если это первая созданная функция, то она будет обозначена как FN_1.
В рабочей области (правая колонка) создайте свою функцию. Для написания функции используйте язык программирования JavaScript:

3. Для проверки работоспособности функции нажмите кнопку Выполнить, для проверки всех созданных функций — ОК:

Если в коде функции будет найдена ошибка, то редактор её обозначит при помощи всплывающего сообщения:

Если вычисление функции выполняется больше 5 секунд, то в строке состояния отобразится предупреждение формата «Функция [название функции] выполняется дольше 5 секунд»:


4. После закрытия редактора пользовательских функций будет вызван пересчет таблицы.
Для синхронных функций:
- Если внутри функции есть
return, то функция обрабатывается как обычная стандартная функция; - Если внутри функции нет
return, то последним аргументом будет передана функцияupdaterячейки, в любой момент можно в неё передать результат, в функциюupdaterвторым аргументом можно будет передать функциюdestroyдля закрывающей логики.
Для асинхронных функций:
- Если внутри функции есть
return, то изначально будет возвращено пустое значение. Затем, когда запрос завершится, после выполнения промиса будет установлено значение из промиса; - Если внутри функции нет
return, то последним аргументом будет передана функцияupdaterячейки, в любой момент можно в неё передать результат, в функциюupdaterвторым аргументом можно будет передать функциюdestroyдля закрывающей логики.
5. Результат функции кэшируется. Если в ячейке A1 уже получили значение, то в A2 с такой же функцией будет отдано кэшированное значение, при этом выполняется функция. Если значение изменилось, то будет перерисовка, новое значение уйдет в кэш.
Пример синхронной функции с return

В данном примере первым аргументом передана функция return.
Пример синхронной функции без return

В данном примере последним аргументом передана функция updater.
Пример асинхронной функции с return

В данном примере первым аргументом передана функция return.
Пример асинхронной функции без return

В данном примере последним аргументом передана функция updater.
Изменение/удаление пользовательской функции
Для изменения функции выделите её в списке функций, внесите изменения в код функции и нажмите кнопку Выполнить.
Для переименования функции:
1. Выделите функцию и нажмите кнопку Переименовать;
2. Введите название и нажмите ОК:

Для удаления функции выберите её в списке функций и нажмите кнопку Удалить.
Пример
Пользователь создал функцию, которая должна складывать два аргумента.
1. Выделите ячейку, в которой должен отображаться результат выполнения функции.
2. Введите знак равно « = ».
3. Начните набирать название функции. Сразу после ввода первой буквы автоматический поиск будет выдавать подходящие результаты:
4. Выберите нужную функцию и введите значения аргументов в скобках функции. Аргументы разделите точкой с запятой без добавления пробелов между аргументами.
5. Нажмите клавишу Enter.
Пример записи функции в строке формул и результат сложения представлен на рисунке ниже:












