Синтаксис формул
Формула — вычисляемое выражение, состоящее из констант, ссылок на поля записи текущего каталога, операторов и функций.
Типы данных
Формулы учитывают типы данных. Типы данных имеют константы, поля и функции. Значение вычисленной формулы приводиться к типу данных поля, в котором она задана (к тексту, к числу, к дате и т.д.).
Числа
Целые числа: 1
Числа с плавающей точкой: 1.123 (десятичный разделитель — точка)
Отрицательные числа: -1
Строки
Одинарные кавычки: ‘string’
Двойные кавычки: “string”
(Экранирование пока не поддерживается)
Булевые значения
Истина: true
Ложь: false
Даты
Создать дату можно через функцию DATE
Массивы
[1,2,3]
Ссылка на поле
{FIELD NAME}, где FIELD NAME - это название поля
На данный момент поддерживаются следующие типы полей для формул (таблица). В случае отсутствия у поля значения ему присваивается значение по умолчанию.
Пустое значение, что означает, что любая формула с пустой датой вернет пустое значение. Например: DAY({Дата}), если значение поля с названием Дата равно пустому значению, то в результате вычисления выражения будет пустое значение
Текст
Строка
“”
Текстовый редактор
Строка
“”(Пустая строка)
Число
Число
NULL
Дата
Дата
NULL
Прогресс
Число
0
Оценка звездами
Число
0
Переключатель
Булевое значение
False
Статус
Массив
Пустой массив
Набор галочек
Массив
Пустой массив
Операторы
Арифметические
Плюс
+
Сложение двух значений
Число + Число = Число
Строка + Строка = Строка
Число + Строка = Строка
1 + 2 = 3
“test” + “str” = “teststr”
1 + “str” = “1str”
Минус
-
Вычитание двух значений
Число - Число = Число
5 - 2 = 3
Умножение
*
Умножение двух значений
Число * Число = Число
3 * 5 = 15
Деление
/
Деление одного значения на другое
Число / Число = Число
10 / 2 = 5
Остаток от деления
%
Остаток от деления одного значения на другое
Число % Число = Число
12 % 7 = 5
Возведение в степень
^
Возведение в степень одного значение на другое
Число ^ Число = Число
12 ^ 2 = 144
Строковые
Конкатенация
&
Склеивание двух строк
Строка & Строка = Строка
Строка & Число = Строка
5 & “2” = “52”
Логические
Больше чем
>
Возвращает true, если значение слева больше, чем справа, иначе false
Число - Число = Булевый
Строка - Строка = Булевый
Дата - Дата = Булевый
Булевый - Булевый = Булевый В остальных случаях значения преобразуются в строку и сравниваются в их строковом представлении
1 > 2 = false
Меньше чем
<
Возвращает true, если значение слева меньше, чем справа, иначе false
Число - Число = Булевый
Строка - Строка = Булевый Дата - Дата = Булевый
Булевый - Булевый = Булевый
В остальных случаях значения преобразуются в строку и сравниваются в их строковом представлении
1 < 2 = true
Больше или равно
>=
Возвращает true, если значение слева больше, чем справа или равно ему, иначе false
Число - Число = Булевый
Строка - Строка = Булевый Дата - Дата = Булевый
Булевый - Булевый = Булевый
В остальных случаях значения преобразуются в строку и сравниваются в их строковом представлении
1 >= 2 = false
Меньше или равно
<=
Возвращает true, если значение слева меньше, чем справа или равно ему, иначе false
Число - Число = Булевый
Строка - Строка = Булевый Дата - Дата = Булевый
Булевый - Булевый = Булевый
В остальных случаях значения преобразуются в строку и сравниваются в их строковом представлении
1 <= 2 = true
Равно
==
Возвращает true, если значение слева равно правому, иначе false
Число - Число = Булевый
Строка - Строка = Булевый Дата - Дата = Булевый
Булевый - Булевый = Булевый
В остальных случаях значения преобразуются в строку и сравниваются в их строковом представлении
1 == 2 = false
Не равно
!=
Возвращает true, если значение слева не равно правому, иначе false
Число - Число = Булевый
Строка - Строка = Булевый Дата - Дата = Булевый
Булевый - Булевый = Булевый
В остальных случаях значения преобразуются в строку и сравниваются в их строковом представлении
1 != 2 =false
Отрицание
!
Возвращает true, если значение справа false, иначе true
Булевый = Булевый
! 1 > 2 = true
Логическое и
&&
Возвращает true, если значение слева и справа истинно, иначе false
Булевый - Булевый = Булевый
1 > 2 && 3 > 2 = false
Логическое или
||
Возвращает true, если значение слева или справа истинно, иначе false
Булевый - Булевый = Булевый
1 > 2 || 3 > 2 = true
Функции
Синтаксис
Все функции пишутся заглавными или строчными буквами
(например: CONCAT, concat, ConcAt, все эти варианты будут валидными), где-то для улучшения читаемости есть _, параметры функции должны быть ограничены круглыми скобками и перечислены через запятую.
Как значение формулы преобразуется к типу поля.
Вычисленное значение формулы не обязательно преобразовывать, чтобы оно соответствовало типу поля
При вычислении могут возникнуть различного рода ошибки, например, деление на 0, получение остатка от деление на 0 и тд, в таком случае выражение примет пустое значение
Ошибки
При ошибке на этапе вычисления вернется пустое значение. В формулах предусмотрены следующего рода ошибки:
Деление на 0
Остаток от деления на 0
Попытка получения корня из отрицательного числа, через функцию SQRT
Попытка создать некорректную дату, например, с 31 февраля
Попытка ввести некорректную строку в функциях, которые требуют явные строки, например, DATEADD
В выражениях при появлении пустого значения на каком-то из этапов вычисления все вычисления станут пустым значением, за исключением функций JOIN и CONCAT, они преобразуют пустое значение в пустую строку
Пример: CONCAT("123", 1 / 0) = "123"
Строковые функции
CONCAT(строка1, строка2, …)
Склеивает аргументы в 1 строку
Принимает любое количество аргументов. Обрабатывает пустые значения
Числа, Строки = Строка
JOIN([строка1 строка2, …], разделитель, ?аттрибут)
Объединяет строки с разделителем. на 1 месте разделитель
Принимает массив строк. Обрабатывает пустые значения
разделитель = Строка
строка1, строка2 = Массив строк
TRIM(по, chars, str)
Удаляет указанные символы с начала и/или конца строки
1-”trailing”, “leading”, “both”, 2-строка,
3-строка = Строка
SEARCH(str, substr)
Ищет позицию первого вхождения подстроки в строку, иначе -1
1-строка
2-строка = Число
REPLACE(str, substr, replacement)
Заменяет все вхождения подстроки в строке на указанную строку
1-строка
2-строка
3-строка = Строка
LOWER(str)
Приводит строку к нижнему регистру
1-строка =Строка
UPPER(str)
Приводит строку к верхнему регистру
1-строка = Строка
REPEAT(str, count)
Повторяет строку count раз
1 - строка
2 - число = Строка
SUBSTRING(str, start, ?end)
Возвращает подстроку с start символ по end символ, start с 0,
end - опциональный параметр, в случае его отсутствия end будет равен последнему индексу строки
1 - строка
2 - число
3 - число = Строка
LEFT(str, count)
Возвращает первые count символов слева из строки
1 - строка
2 - число = Строка
RIGHT(str, count)
Возвращает первые count символов справа их строки
1 - строка
2 - число = Строка
LEN(str)
Возвращает длину строки
Строка = Число
TOSTRING(val)
Преобразовывает значение в строку
Любой тип = Строка Дата преобразуется в ISO 8601 формат
REGEXMATCH(str, regex, ?mode)
Соответствует ли строка регулярному выражению Если мод = 1, то регистр буду игнорироваться
1 - Строка
2 - Строка
3 - Число = Булево
REGEXREPLACE(str, regex, replacement, ?mode)
Замена части строки по регулярному выражению Если мод = 1, то будут изменены все вхождения, иначе только первое
1 - Строка
2 - Строка
3 - Строка
4 - Число = Строка
REGEXEXTRACT [В РАЗРАБОТКЕ]
Числовые функции
ABS(num)
Возвращает абсолютное значение числа
Число = Число
ROUND(num, ?decimals)
Округляет num до ближайшего целого числа. decimals - опциональный параметр, количество знаков после запятой
1 -Число, 2-Число = Число
CEIL(num, ?decimals)
Округляет num до целого числа в большую сторону. decimals - опциональный параметр, количество знаков после запятой
1 -Число, 2-Число = Число
FLOOR(num, ?decimals)
Округляет num до целого числа в меньшую сторону. decimals - опциональный параметр, количество знаков после запятой
1 -Число, 2-Число = Число
EXP(num)
Возвращает экспоненту возведенную в указанную степень
Число = Число
LN(num)
Натуральный логарифм от числа
Число = Число
LOG(num, base)
Логарифм от числа num по основанию base
1 -Число, 2-Число = Число
LOG10(num)
Логарифм от числа num по основанию 10
Число = Число
SIN(rad), COS(rad), TAN(rad), COT(rad), ASIN(num), ACOS(num), ATAN(num), ACOT(num)
Тригонометрические функции
Число = Число
PI()
Число пи
MOD(dividend, divisor)
Возвращает остаток от деления dividend на divisor
1 -Число, 2-Число = Число
POWER(base, exp)
Возвращает base возведенную в степень exp
1-Число, 2-Число = Число
SQRT(num)
Возвращает корень из числа
Число = Число
RANDOM()
Возвращает число в диапазоне [0;1)
= Число
SUM(...[num1, num2])
Возвращает сумму всех аргументов функции
Принимает бесконечное кол-во аргументов
Число = Число
AVERAGE(...[num1, num2])
Возвращает среднее арифметическое значений
Принимает бесконечное кол-во аргументов
Число = Число
MIN(...[num1, num2])
Возвращает минимальное из всех значений
Принимает бесконечное кол-во аргументов
Число = Число
MAX(...[num1, num2])
Возвращает максимальное из всех значений Принимает бесконечное кол-во аргументов
Число = Число
FIXED(num, decimals)
Возвращает форматированное число в строковом представлении 1000 -> ‘1 000’, decimals - опциональный параметр, количество знаков после запятой
1-Число, 2-Число = Строка
TONUMBER(num)
Преобразует значение к типу число
Любой тип данных = Число
Функции для работы с датами
DATE(year, month, day, hour, minute, second)
Описывает дату на основании аргументов hour, minute, second - опциональные
1-Число
2-Число
3-Число 4-Число
5-Число
6-Число = Дата
DATEADD(date, amount, unit)
Добавляет к дате amount в unit формате
1-Дата
2-Число
3-”s” | “min” | “h” | “d” | “w” | “mon” | “y” = Дата
DATESUB(date, amount, unit)
Вычитает от даты amount в unit формате
1-Дата
2-Число
3-”s” | “min” | “h” | “d” | “w” | “mon” | “y” = Дата
DATEDIFF(date, date2, unit)
Возвращает разницу между датами в unit формате
1-Дата
2-Дата
3-”ss” | “mm” | “hh” | “d” | “w” | “m” | “y” = Число
DATEFORMAT(date, format)
https://docs.google.com/spreadsheets/d/1u006NkjUTW3bQZDU_usQZyf6uXZexLQkUiaf-8CJ6iQ/edit?gid=0#gid=0
Преобразует дату в указанный формат
1-Дата
2-Строка = Строка Форматы: 'HH', 'HH12', 'HH24', 'MI', 'SS', 'MS', 'AM', 'PM', 'YYYY', 'YY', 'IYYY', 'IY', 'BC', 'AD', 'Month', 'Mon', 'MM', 'Day', 'Dy', 'DDD', 'DD', 'ID', 'IW', 'Q', 'TZM'
DATEPARSE(str, format)
Преобразует строку в дату
1-Строка
2-Строка = Дата Форматы: 'HH', 'HH12', 'HH24', 'MI', 'SS', 'MS', 'AM', 'PM', 'YYYY', 'YY', 'IYYY', 'IY', 'BC', 'AD', 'Month', 'Mon', 'MM', 'Day', 'Dy', 'DDD', 'DD', 'ID', 'IW', 'Q', 'TZM'
STARTOF(date, unit)
Сдвиг даты в начало (года, месяца и тд)
1-Дата
2-”ss” | “mm” | “hh” | “d” | “w” | “m” | “y” = Дата
ENDOF(date, unit)
Сдвиг даты в конец (года, месяца и тд)
1-Дата
2-”ss” | “mm” | “hh” | “d” | “w” | “m” | “y” = Дата
SECOND(date)
Возвращает секунды из даты
1-Дата = Число
MINUTE(date)
Возвращает минуты из даты
1-Дата = Число
HOUR(date)
Возвращает часы из даты
1-Дата = Число
DAY(date)
Возвращает день из даты
1-Дата = Число
WEEKDAY(date)
Возвращает день недели из даты. Под номером один понедельник.
1-Дата = Число
WEEKNUM(date)
Получает число ISO недели из даты
1-Дата = Число
MONTH(date)
Получает месяц из даты
1-Дата = Число
QUARTER(date)
Получает квартал из даты
1-Дата = Число
YEAR(date)
Получает год из даты
1-Дата = Число
SETYEAR(date, num)
SETQUARTER(date, num)
SETMONTH(date, num)
SETDAY(date, num)
SETWEEKNUM(date, num)
SETWEEKDAY(date, num)
SETTIME(date, num, num, num)
SETHOUR(date, num)
SETMINUTE(date, num)
SETSECOND(date, num)
Устанавливает значение для даты
1-Дата, 2 - Число = Дата
TIMESTAMP(date)
Возвращает дату в секундах, начиная с 1 января 1970
Дата = Число
NOW()
[В РАЗРАБОТКЕ]
Возвращает текущее время
Не принимает аргументов = Дата
TODAY()
[В РАЗРАБОТКЕ]
Возвращает дату на сегодняшний день
Не принимает аргументов = Дата
Контекстные
RECORDID()
Возвращает dbid текущей записи в строке или “#”
-
CATALOGID()
Возвращает id текущего каталога
-
Логические
IF(условие, истина, ложь)
Первым аргументом функция принимает условие, вторым аргументом идет значение, которое будет возвращено в случае если условие вернуло true, иначе IF конструкция вернет 3 аргумент
Если возвращаемые значения IF одинаковы, то вернется тот же тип, иначе IF преобразует типы на основании двух значений, которые лежат в возвращаемых значениях
Число - Строка = Строка Число - Булевое = Число
Булевое - Строка = Строка
Строка - Дата = Строка
Число - Дата - Строка
Булевое - Дата - Строка
Дальнейшие преобразования перекладываются на пользователя
ISEMPTY(val)
Возвращает истинно, если поле пустое или же возникла ошибка на этапе вычисления Иначе ложь
Любой = Булевое
Функции для работы с массивами
Для всех функций, у которых есть опциональный аргумент attr, его нужно указывать только для типов полей статус и чекбокс, иначе будет ошибка, параметр является опциональным и в случае его опущения в формуле будет использоваться массив эквивалентный NAME({status})
INDEX(arr, ?attr)
Возвращает элемент массива по индексу Пока что не работает для вложенных массивов
1 - массив
2 - строка (id | name)
ID(arr)
Возвращает массив из id для полей типа статус и чекбокс
1 - статус | чекбокс
NAME(arr)
Возвращает массив из названий для полей типа статус и чекбокс
1 - статус | чекбокс
COUNT(arr)
Возвращает количество элементов в массиве
1 - массив
SLICE(arr, start, ?end, ?attr)
Возвращает срез массива от start по end не включительно, в случае отсутствия end срез будет браться до конца массива Пока что не работает для вложенных массивов
1 - массив
2 - число
3 - число
4 - строка (id | name)
FIND(arr, item, ?attr)
Ищет item и возвращает его или же пустое значение при его отсутствии
Пока что не работает для вложенных массивов
1 - массив
2 - элемент массива
3 - строка (id | name)
FILTER(arr, item, ?attr)
Возвращает массив без item
Пока что не работает для вложенных массивов
1 - массив
2 - элемент массива
3 - строка (id | name)
SORT(arr, ?mode, ?attr)
Сортирует массив, в порядке возрастания, если mode = -1, то в порядке убывания
Пока что не работает для вложенных массивов
1 - массив
2 - число
3 - строка (id | name)
UNIQUE(arr, attr?)
Возвращает массив из уникальных элементов
Пока что не работает для вложенных массивов
1 - массив
2 - строка (id | name)
Last updated