Синтаксис

Чтобы успешно писать формулы Ноушен, необходимо изучить cинтаксис языка Notion Formula 2.0. Ниже представлено подробное описание компонентов формул и правил их использования.

Компоненты формул Notion 2.0

Во встроенном справочнике Notion, ровно как и в другой официальной документации, нет описания компонентов формул Notion 2.0. Автором сайта «Формулы Notion 2.0» предпринята попытка систематизировать компоненты формул Notion.

/* https://notionformulas.chumakova.ru */lets(
    
    /* Показатель: */
    name, "Цена продажи",

    /* Значение: */
    value, round((prop("Базовая цена") + prop("Торговая наценка")) * 1.237),

    /* Вывод: */
    name + ": " + value + " ₽"

)

Формулы Notion могут содержать следующие компоненты:

  • литералы: 1.237, "Цена продажи", ": ", " ₽";
  • функции: lets, round;
  • ссылки на значения из ячеек свойств базы данных: prop("Базовая цена"), prop("Торговая наценка");
  • операторы: (), +, *;
  • переменные: name, value;
  • комментарии: /* Показатель: */, /* Значение: */, /* Вывод: */;
  • символы перевода строки;
  • символы табуляции.

Хотите чувствовать себя в Notion как рыба в воде?

Подпишитесь на канал автора сайта «Формулы Notion 2.0» с обзорами новых функций, советами начинающим и продвинутым пользователям, шаблонами, видеоуроками и эксклюзивными формулами! Перейти

Литералы

Литералы представляют собой константы, включаемые непосредственно в код формулы. Они могут быть изменены в коде формулы только во время ее редактирования.

Числовые литералы

Числовые литералы могут записываться в виде целого числа или с десятичным знаком – точкой. Использование запятой в качестве десятичного знака приводит к ошибке.

/* https://notionformulas.chumakova.ru */100
/* https://notionformulas.chumakova.ru */100.99

Числовые литералы могут записываться со знаком «минус». Между знаком «минус» и числом допускаются пробелы.

/* https://notionformulas.chumakova.ru */-100.99
/* https://notionformulas.chumakova.ru */- 100.99

Использование разделителей разрядов не допускается. Использование пробела в качестве разделителя разрядов приводит к возникновению ошибки.

Поддерживается экспоненциальная запись. Регистр латинской буквы e не влияет на работу формулы.

/* https://notionformulas.chumakova.ru */1e+100
/* https://notionformulas.chumakova.ru */1E+100

Во встроенном редакторе кода и в окне ввода формулы Notion числовые литералы подсвечиваются пурпурным цветом в светлой теме и светло-розовым в темной.

Строковые литералы

Строковый литерал (название происходит от слова «строка») – это текст, который необходимо «зашить» в формулу.

Строковые литералы должны быть заключены в универсальные двойные кавычки («машинописные», «программистские»). Использование других видов кавычек не допускается. Текст без кавычек будет интерпретироваться как название функции или переменной и, скорее всего, вызовет ошибку.

/* https://notionformulas.chumakova.ru */"Привет, мир!"

В строковых литералах допускается использование символов Юникода, включая эмодзи.

/* https://notionformulas.chumakova.ru */"👨‍🦳🌅 夕阳下沉思的老人"

Строковые литералы подсвечиваются в Notion салатовым цветом.

Логические литералы

Логические литералы ограничены только двумя значениями – true и false. Они записываются «как есть» – без дополнительных знаков и операторов.

/* https://notionformulas.chumakova.ru */true
/* https://notionformulas.chumakova.ru */false

Логические литералы подсвечиваются пурпурным цветом в светлой теме Notion и светло-розовым в темной.

Литералы-массивы

Литералы-массивы записываются с использованием оператора «квадратные скобки». В качестве разделителя элементов массива (списка) используется запятая (попытка использовать другие разделители вызывает ошибку). После последнего элемента запятой быть не должно. Между квадратными скобками и элементами массива (списка) допускается использование пробелов, переносов строк и табуляции.

/* https://notionformulas.chumakova.ru */[1,2,3]
/* https://notionformulas.chumakova.ru */[ "Один", "Два", "Три" ]
/* https://notionformulas.chumakova.ru */[
    true,
    false,
    true
]

25 формул Notion на каждый день

Бесплатный шаблон для Notion с подборкой из 25 востребованных формул от автора сайта «Формулы Notion 2.0». Перейти

Функции

Функция – это код, который выполняет определенную задачу, был написан разработчиками приложения и скрыт от глаз пользователя. Чтобы вызвать функцию, необходимо прописать ее название и поставить после нее две круглые скобки. Названия функции чувствительны к регистру, поэтому их необходимо записывать ровно так, как они приведены в справочнике.

/* https://notionformulas.chumakova.ru */formatDate()

Если функция принимает аргументы (параметры), то их необходимо прописать внутри скобок. Если аргументов два или более, требуется разделить их запятыми. Порядок аргументов должен соответствовать спецификации функции.

/* https://notionformulas.chumakova.ru */formatDate(prop("Дата"), "YYYY")

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

Однако в Notion есть и функции с необязательными аргументами. В схеме функции такие аргументы помечены знаком вопроса. Если необязательный аргумент не передан в функцию, сообщение об ошибке не выводится.

/* https://notionformulas.chumakova.ru */substring("Текст", 1)
/* https://notionformulas.chumakova.ru */substring("Текст", 1, 3)

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

/* https://notionformulas.chumakova.ru */today()

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

Список функций с классификацией по назначению, а также спецификацию и готовые формулы можно найти в разделе «Функции Notion».

Традиционная запись функций Notion

Традиционный способ записи функции Notion подразумевает, что сначала указывается название функции, затем прописываестя оператор «круглые скобки». В скобках через запятую перечисляются агрументы функции.

/* https://notionformulas.chumakova.ru */substring("Текст", 1)
/* https://notionformulas.chumakova.ru */dateBetween(dateEnd(prop("Дедлайн")), dateStart(prop("Дедлайн")), "days")

Альтернативная запись функций Notion

В языке Notion Formula 2.0 появилась возможность использовать альтернативный способ записи функций, схожий с записью методов в языке JavaScript.

Эта запись начинается с первого аргумента функции, затем следует оператор «точка», название функции и оператор «круглые скобки». В скобках через запятую прописываются другие агрументы функции. Если других аргументов нет, скобки оставляют пустыми.

Такая запись недоступна для функций, не принимающих аргументов, а также для функций let, lets, prop.

Удобство данной записи заключается в том, что она делает логику построения формулы более прозрачной: функции записываются слева направо. В этом же направлении мы, русскоговорящие пользователи Notion, читаем текст.

/* https://notionformulas.chumakova.ru */"Текст".substring(1)
/* https://notionformulas.chumakova.ru */prop("Дедлайн").dateEnd().dateBetween(prop("Дедлайн").dateStart(), "days")

В справочнике «Формулы Notion 2.0» большинство формул представлено в обеих записях.

Функции подсвечиваются в Notion ярко-розовым цветом в светлой теме и белым в темной. Исключением являются функции, выполняющие роль операторов (например, if let, and): они подсвечиваются синим в светлой теме и светло-розовым в темной.

Значения из ячеек свойств баз данных

Для получения значений из ячеек свойств (столбцов) баз данных используется фукнция prop, которая принимает в качестве аргумента строковый литерал с названием свойства.

В спецификации Notion prop не называется функцией. Однако автор сайта «Формулы Notion 2.0» включила prop в список функций, поскольку запись ссылки на свойство аналогична записи функции.

/* https://notionformulas.chumakova.ru */prop("Цена") * prop("Количество")

В поле ввода кода формулы Notion функция prop автоматически преобразуется в динамическую ссылку на свойство (подсвечивается серым фоном). Это – всего лишь визуальное представление функции prop, добавленное для облегчения восприятия формул Notion 2.0.

При копировании формулы из окна ввода формулы в буфер обмена копируется иcходная функция prop. При вставке формулы из буфера обмена в окно ввода формулы Notion функция prop автоматически преобразуется в динамическую ссылку (при выполнении этой операции иногда случаются сбои – ссылки на свойства приходится проставлять вручную).

Синтаксис языка Notion Formula 2.0
В окне ввода формулы Notion функция prop преобразуется в динамическую ссылку

Новчики часто совершают ошибку, пытаясь поместить динамическую переменную в prop. Такая конструкция является заведомо неправильной, поскольку имеет место попытка передать один экземпляр функции prop в качестве аргумента в другой экземпляр функции.

Синтаксис языка Notion Formula 2.0
Неправильное использование функции prop

При переименовании свойств базы данных ссылки на свойства, содержащиеся в формуле, переписываются автоматически.

Слово prop подсвечивается в Notion оранжевым цветом. Динамические ссылки в окне редактирования формулы подсвечиваются серым фоном.

Операторы

Операторы в формулах Notion в большинстве случаев работают так же, как в языках программирования.

Некоторые операторы доступны только в символьном виде (например, *, %), другие – как в символьном, так и текстовом (например, && (and), ! (not)).

У большинства операторов есть функции-аналоги (например, multiply, mod, and, not).

Список операторов, а также спецификацию и готовые формулы можно найти в разделе «Встроенное».

Символьные операторы подсвечиваются в Notion коричневым цветом в светлой теме и оранжевым в темной. Текстовые – синим в светлой теме и светло-розовым в темной. Операторы-скобки, операторы «запятая» и «точка» подсвечиваются серым цветом.

Переменные

В формулах Notion 2.0 появились пользовательские и предопределенные переменные.

Пользовательские переменные

Для добавления пользовательских переменных используются функции let и lets. Использование операторов присваивания (например, знака «равно» =) не допускается.

/* https://notionformulas.chumakova.ru */let(
    symbol, "*",
    symbol.repeat(10)
)

Пользовательские переменные в Notion можно именовать с использованием кириллицы.

/* https://notionformulas.chumakova.ru */lets(
    коэффициент, prop("Коэффициент"),
    ставка, prop("Ставка"),
    ставка * коэффициент
)

Названия пользовательских переменных не могут включать в себя операторы (например, +%), служебные символы (например, $#), составные символы (эмодзи).

Предопределенные переменные

Предопределенные переменные можно обнаружить в функциях, работающих со списками (массивами).

Переменная index позволяет обратиться к ключу (индексу) элемента списка (массива), а переменная current – к значению элемента списка (массива).

/* https://notionformulas.chumakova.ru */map(prop("Участники"), index)
/* https://notionformulas.chumakova.ru */map(prop("Участники"), current)

Переменные подсвечиваются в Notion черным цветом в светлой теме и белым в темной.

Комментарии

В формулах Notion 2.0 стали доступны блочные комментарии. Чтобы добавить комментарий в формулу, необходимо поставить открывающие символы /*, прописать текст комментария и поставить закрывающие символы */. Содержимое комментариев игнорируется при выполнении кода формулы.

/* https://notionformulas.chumakova.ru */prop("Выполнено") / prop("Всего") /* Процент выполнения */

Комментарии подсвечиваются в Notion серым цветом в светлой теме и светло-коричневым в темной.

Перевод строки

Для перевода строки в окне ввода формулы необходимо воспользоваться клавиатурным сочетанием Shift + Return в macOS, Shift + Enter в Windows. Во встроенном редакторе кода достаточно нажатия на клавишу Return в macOS, Enter в Windows.

Табуляция

Для добавления отступов слева нужно поставить курсор в начало строки и нажать на клавишу Tab столько раз, сколько отступов необходимо получить. Для удаления отступов слева можно воспользоваться клавиатурным сочетанием Shift + Tab. Tab и Shift + Tab срабатывают также и при выделении нескольких строк кода.