Перейти к содержанию
Innovialabs

Формулы и роллапы в Notion: продвинутое руководство с примерами

Продвинутое3 мин

Коротко

Формула вычисляет значение внутри одной записи, роллап собирает и агрегирует данные из связанных записей; вместе они дают в Notion автоматические сроки, прогресс проектов и остаток бюджета без ручных подсчётов.

Главное

  • Formula — свойство, которое вычисляет значение по другим свойствам этой же записи: текст, число, дату, флажок.
  • Rollup — свойство, которое через relation берёт значения из связанных записей и агрегирует их: сумма, количество, процент, самая поздняя дата.

Типичная связка: relation «Проект → Задачи», роллап считает долю выполненных задач, формула превращает её в прогресс-бар.

Синтаксис формул

Свойства вызываются через prop("Имя"). Поддерживаются операторы + - * /, сравнения == != > <, логика and, or, not и точечная запись методов.

prop("Цена") * prop("Количество")
prop("Название") + " — " + prop("Клиент")
prop("Теги").length()

Полезные функции:

ФункцияЧто делает
if(условие, да, нет)Условие с двумя ветками
ifs(у1, з1, у2, з2, иначе)Цепочка условий без вложенных if
empty(x)Проверка на пустое значение
let(имя, значение, выражение)Переменная внутри формулы
format(x)Превращает число или дату в текст
round(x), abs(x)Округление и модуль

Для читаемости разбивайте длинные формулы на строки — редактор формул это позволяет.

Даты

  • now() — текущие дата и время, today() — сегодняшняя дата.
  • dateBetween(дата1, дата2, "days") — разница дата1 − дата2 в днях, неделях, месяцах.
  • dateAdd(дата, 14, "days") и dateSubtract(...) — сдвиг даты.
  • dateStart(...) и dateEnd(...) — начало и конец диапазона дат.
  • formatDate(дата, "DD.MM.YYYY") — вывод в нужном формате.

Пример: дата следующей проверки документа через 90 дней после последней.

dateAdd(prop("Проверено"), 90, "days")

Роллапы через relations

Чтобы создать роллап:

  1. Убедитесь, что есть relation на нужную базу.
  2. Добавьте свойство Rollup и выберите relation.
  3. Выберите свойство связанной базы и способ расчёта.

Варианты расчёта: показать исходные значения, Count all, Count values, Sum, Average, Min / Max, Earliest / Latest date, Percent checked для чекбоксов, проценты по группам статуса.

Примеры:

  • В «Проектах»: сумма часов по задачам, самая поздняя дата задачи, процент выполненных.
  • В «Клиентах»: сумма всех счетов, дата последней сделки.

Формулы также умеют работать со связями напрямую: prop("Задачи") возвращает список страниц, к которому применимы filter, map и length.

Готовые формулы

Статус срока

Показывает «Просрочено», «Сегодня» или сколько дней осталось. Нужны свойства Срок (Date) и Статус (Status).

if(empty(prop("Срок")) or prop("Статус") == "Готово", "",
  let(d, dateBetween(prop("Срок"), today(), "days"),
    ifs(
      d < 0, "Просрочено на " + format(abs(d)) + " дн.",
      d == 0, "Сегодня",
      "Осталось " + format(d) + " дн."
    )
  )
)

Прогресс по задачам проекта

Доля выполненных задач от 0 до 1 прямо по relation, без отдельного роллапа:

let(t, prop("Задачи"),
  if(t.length() == 0, 0,
    t.filter(current.prop("Статус") == "Готово").length() / t.length()
  )
)

Задайте формату числа отображение в процентах.

Прогресс-бар

Берёт число от 0 до 1 из свойства Прогресс и рисует шкалу из десяти делений:

let(p, round(prop("Прогресс") * 10),
  repeat("●", p) + repeat("○", 10 - p) + " " +
  format(round(prop("Прогресс") * 100)) + "%"
)

Остаток бюджета

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

if(empty(prop("Бюджет")) or prop("Бюджет") == 0, "Бюджет не задан",
  let(left, prop("Бюджет") - prop("Потрачено"),
    if(left < 0,
      "Перерасход: " + format(abs(left)),
      format(round(prop("Потрачено") / prop("Бюджет") * 100)) + "% израсходовано"
    )
  )
)

Частые ошибки

  • Деление на ноль — всегда проверяйте знаменатель через if.
  • Сравнение с переименованным статусом — формула ищет точное значение. Переименовали «Готово» — обновите формулы.
  • Смешение типов — нельзя сложить текст с числом без format().
  • Длинные цепочки роллапов и формул через несколько баз работают медленнее и сложнее в отладке. Если расчёт становится похож на финансовую модель, его место в таблице или BI.

Частые вопросы

Формула вычисляет значение по свойствам самой записи. Роллап собирает значения из связанных записей и агрегирует их. Часто роллап даёт сырое число, а формула превращает его в понятный вывод.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.