Содержание
Введение
В редакторе таблиц есть возможность создания своих функций с помощью плагина Пользовательские функции.
Примечание. Такая возможность есть только в редакторе таблиц.
Вкладка Плагины в десктопной версии:
Пользовательские функции доступны в десктопной версии и в онлайн версии редактора и поддерживают язык программирования JavaScript. Сама функция работает с примитивными типами данных такими как: Number, String, Array, Boolean, которые передаются в аргументы функции. Создавать функции можно с любым количеством аргументов. Возвращаемый результат переводится во внутренний тип данных ячейки (например, если вернуть A1, то будет преобразование на значение ячейки).
Примечание. Диапазоны данных при передаче в аргументы оборачиваются в квадратные скобки « [] ».
При сохранении созданная функция проверяется на время выполнения (должно быть не более 5 секунд), при этом входящие параметры не учитываются. Для просмотра выводимого значения можно использовать консоль браузера. Для онлайн версии нажмите клавишу F12, для десктопной версии выполните операции, описанные в статье Как включить режим отладки макросов.
Для десктопной версии созданные функции сохраняются локально, поэтому ими можно пользоваться в любом документе редактора таблиц на этом устройстве. Для онлайн версии созданные функции сохраняются локально для каждого браузера (если функция была создана в документе, открытом в браузере Яндекс, то, открыв этот документ в браузере Google Chrome, вы не увидите созданную функцию).
Внимание!
- Созданные функции не могут быть вызваны из мастера формул;
- У функций нет доступа к API редактора;
- Функции могут быть как синхронными, так и асинхронными (с возможностью внешних запросов);
- Функции нельзя использовать в макросах.
Создание пользовательской функции
Для создания функции выполните следующие шаги.
- На вкладке Плагины нажмите кнопку
Пользовательские функции:
- В окне Пользовательские функции нажмите кнопку Создать.
В списке функций (левая колонка) отобразится функция с префиксом FN_
и порядковым номером. Если это первая созданная функция, то она будет обозначена как FN_1
.
В рабочей области (правая колонка) создайте свою функцию. Для написания функции используйте язык программирования JavaScript:
- Для проверки работоспособности функции нажмите кнопку Выполнить, для проверки всех созданных функций — ОК:
Если в коде функции будет найдена ошибка, то редактор её обозначит при помощи всплывающего сообщения:
Если вычисление функции выполняется больше 5 секунд, то в строке состояния отобразится предупреждение формата «Функция [название функции] выполняется дольше 5 секунд»:
- После закрытия редактора пользовательских функций будет вызван пересчет таблицы.
Для синхронных функций:
- Если внутри функции есть
return
, то функция обрабатывается как обычная стандартная функция; - Если внутри функции нет
return
, то последним аргументом будет передана функцияupdater
ячейки, в любой момент можно в неё передать результат, в функциюupdater
вторым аргументом можно будет передать функциюdestroy
для закрывающей логики.
Для асинхронных функций:
- Если внутри функции есть
return
, то изначально будет возвращено пустое значение. Затем, когда запрос завершится, после выполнения промиса будет установлено значение из промиса; - Если внутри функции нет
return
, то последним аргументом будет передана функцияupdater
ячейки, в любой момент можно в неё передать результат, в функциюupdater
вторым аргументом можно будет передать функциюdestroy
для закрывающей логики.
- Результат функции кэшируется. Если в ячейке
A1
уже получили значение, то вA2
с такой же функцией будет отдано кэшированное значение, при этом выполняется функция. Если значение изменилось, то будет перерисовка, новое значение уйдет в кэш.
Пример синхронной функции с return
Примечание. В данном примере первым аргументом передана функция return
.
Пример синхронной функции без return
Примечание. В данном примере последним аргументом передана функция updater
.
Пример асинхронной функции с return
Примечание. В данном примере первым аргументом передана функция return
.
Пример асинхронной функции без return
Примечание. В данном примере последним аргументом передана функция updater
.
Изменение/удаление пользовательской функции
Для изменения функции выделите её в списке функций, внесите изменения в код функции и нажмите кнопку Выполнить.
Для переименования функции:
- Выделите функцию и нажмите кнопку Переименовать;
- Введите название и нажмите ОК:
Для удаления функции выберите её в списке функций и нажмите кнопку Удалить.
Пример
Пользователь создал функцию, которая должна складывать два аргумента.
- Выделите ячейку, в которой должен отображаться результат выполнения функции;
- Введите знак равно « = »;
- Начините набирать название функции. Сразу после ввода первой буквы автоматический поиск будет выдавать подходящие результаты:
- Выберите нужную функцию и введите значения аргументов в скобах функции. Аргументы разделите точкой запятой без добавления пробелов между аргументами;
- Нажмите клавишу Enter.
Пример записи функции в строке формул и результат сложения представлен на рисунке ниже: