Skip to main content
Notion 公式

公式写作规则

Notion 公式分支类型、自然语言拆解、变量命名、空值判断和分层设计规则。

本页用于整理复杂公式。写长公式前先看这里,避免后期排错和维护变得困难。

让所有分支尽量返回同一种类型

不推荐:

if(prop("完成"), true, "未完成")

推荐:

if(prop("完成"), "已完成", "未完成")

或:

if(prop("完成"), true, false)

尤其是在自动化、按钮变量、日期字段填充中,返回类型要更严格。

复杂公式先写成自然语言

例如「项目健康度」先写成:

  1. 取出全部任务。
  2. 统计完成任务数。
  3. 统计逾期未完成任务数。
  4. 计算完成率和逾期率。
  5. 根据分数输出颜色标签。

再翻译成:

lets(
  任务, prop("任务"),
  总数, 任务.length(),
  完成数, 任务.filter(current.prop("状态") == "已完成").length(),
  逾期数, 任务.filter(current.prop("状态") != "已完成" and not(empty(current.prop("截止日期"))) and current.prop("截止日期") < today()).length(),
  ...
)

使用变量命名业务含义

不推荐:

lets(a, prop("任务"), b, a.length(), c, a.filter(current.prop("状态") == "已完成").length(), c / b)

推荐:

lets(
  任务列表, prop("任务"),
  总数, 任务列表.length(),
  完成数, 任务列表.filter(current.prop("状态") == "已完成").length(),
  if(总数 == 0, 0, 完成数 / 总数)
)

空值先判断,再计算

凡是日期、关联、成员、数字输入,都建议先考虑是否为空。

if(empty(prop("日期")), "", formatDate(prop("日期"), "YYYY-MM-DD"))
if(empty(prop("项目")), "无项目", prop("项目").first().prop("状态"))

大公式分层设计

对于模板系统,建议分为三类公式:

类型用途是否展示
原始输入用户手动填写的数据展示
中间指标辅助计算,如完成数、逾期数、剩余天数可隐藏
展示结果给用户看的状态、标签、进度条展示

如果所有逻辑都塞进一个公式,短期看起来整洁,长期维护成本会很高。


想把这些公式直接用在任务提醒、项目进度、笔记热力图和统计报表里,可以继续了解 FLO.W 思流 Notion 模板

最后更新于