Введение

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

Примечание. Такая возможность есть только в редакторе таблиц.

Вкладка Плагины в десктопной версии:

Вкладка Плагины в десктопной версии
Пользовательские функции доступны в десктопной версии и в онлайн версии редактора и поддерживают язык программирования JavaScript. Сама функция работает с примитивными типами данных такими как: Number, String, Array, Boolean, которые передаются в аргументы функции. Создавать функции можно с любым количеством аргументов. Возвращаемый результат переводится во внутренний тип данных ячейки (например, если вернуть A1, то будет преобразование на значение ячейки).

Примечание. Диапазоны данных при передаче в аргументы оборачиваются в квадратные скобки « [] ».

При сохранении созданная функция проверяется на время выполнения (должно быть не более 5 секунд), при этом входящие параметры не учитываются. Для просмотра выводимого значения можно использовать консоль браузера. Для онлайн версии нажмите клавишу F12, для десктопной версии выполните операции, описанные в статье Как включить режим отладки макросов.

Для десктопной версии созданные функции сохраняются локально, поэтому ими можно пользоваться в любом документе редактора таблиц на этом устройстве. Для онлайн версии созданные функции сохраняются локально для каждого браузера (если функция была создана в документе, открытом в браузере Яндекс, то, открыв этот документ в браузере Google Chrome, вы не увидите созданную функцию).

Внимание!

  1. Созданные функции не могут быть вызваны из мастера формул;
  2. У функций нет доступа к API редактора;
  3. Функции могут быть как синхронными, так и асинхронными (с возможностью внешних запросов);
  4. Функции нельзя использовать в макросах.

Создание пользовательской функции

Для создания функции выполните следующие шаги.

  1. На вкладке Плагины нажмите кнопку Пользовательские функции Пользовательские функции:

Окно Пользовательские функции

  1. В окне Пользовательские функции нажмите кнопку Создать.

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

Создание функции JavaScript

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

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

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

Предупреждение о времени выполнения
Время выполнения функции

  1. После закрытия редактора пользовательских функций будет вызван пересчет таблицы.

Для синхронных функций:

  • Если внутри функции есть return, то функция обрабатывается как обычная стандартная функция;
  • Если внутри функции нет return, то последним аргументом будет передана функция updater ячейки, в любой момент можно в неё передать результат, в функцию updater вторым аргументом можно будет передать функцию destroy для закрывающей логики.

Для асинхронных функций:

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

Пример синхронной функции с return

Пример синхронной функции с return

Примечание. В данном примере первым аргументом передана функция return.

Пример синхронной функции без return

Пример синхронной функции без return

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

Пример асинхронной функции с return

Пример асинхронной функции с return

Примечание. В данном примере первым аргументом передана функция return.

Пример асинхронной функции без return

Пример асинхронной функции без return

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

Изменение/удаление пользовательской функции

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

  1. Выделите функцию и нажмите кнопку Переименовать;
  2. Введите название и нажмите ОК:

Переименование функции
Для удаления функции выберите её в списке функций и нажмите кнопку Удалить.

Пример

Пользователь создал функцию, которая должна складывать два аргумента.

  1. Выделите ячейку, в которой должен отображаться результат выполнения функции;
  2. Введите знак равно « = »;
  3. Начините набирать название функции. Сразу после ввода первой буквы автоматический поиск будет выдавать подходящие результаты:

Автоматический поиск функции

  1. Выберите нужную функцию и введите значения аргументов в скобах функции. Аргументы разделите точкой запятой без добавления пробелов между аргументами;
  2. Нажмите клавишу Enter.

Пример записи функции в строке формул и результат сложения представлен на рисунке ниже:

Пример записи функции и результат

Была ли полезна статья?
Позвольте нам стать лучше
Полезные статьи