Skip to main content
Notion 公式

任务与项目公式

任务状态、完成率、优先级、自动摘要、项目健康度等场景公式。

本页按任务和项目管理场景整理。适合在任务库、项目库、读书库、客户库里快速找公式片段。

每个片段先列出需要准备的属性,再给出可复制公式。

场景用到的主要函数
截止状态lets()dateBetween()ifs()
进度显示min()max()repeat()
项目统计filter()length()round()
文本处理split()trim()unique()

任务状态:今日、逾期、未来

属性准备:

  • 截止日期:日期
  • 状态:单选,含「已完成」
lets(
  已完成, prop("状态") == "已完成",
  剩余天数, dateBetween(prop("截止日期"), today(), "days"),
  ifs(
    已完成, style("已完成", "green"),
    empty(prop("截止日期")), style("未设置日期", "gray"),
    剩余天数 < 0, style("逾期 " + format(abs(剩余天数)) + " 天", "red", "b"),
    剩余天数 == 0, style("今天截止", "yellow", "b"),
    剩余天数 <= 3, style("即将截止", "orange"),
    style("正常", "blue")
  )
)

完成率进度条

属性准备:

  • 完成率:数字,范围 0 到 1
lets(
  比例, min(1, max(0, prop("完成率"))),
  格数, round(比例 * 10),
  repeat("█", 格数) + repeat("░", 10 - 格数) + " " + format(round(比例 * 100)) + "%"
)

优先级评分

属性准备:

  • 重要性:单选,重要 / 普通
  • 紧急性:单选,紧急 / 不紧急
ifs(
  prop("重要性") == "重要" and prop("紧急性") == "紧急", "1 立即处理",
  prop("重要性") == "重要" and prop("紧急性") != "紧急", "2 计划处理",
  prop("重要性") != "重要" and prop("紧急性") == "紧急", "3 委托或快速处理",
  "4 延后或删除"
)

自动生成页面摘要

属性准备:

  • 状态:单选
  • 负责人:成员
  • 截止日期:日期
lets(
  负责人文本, if(empty(prop("负责人")), "未分配", prop("负责人").map(current.name()).join("、")),
  日期文本, if(empty(prop("截止日期")), "未设置截止日", formatDate(prop("截止日期"), "YYYY-MM-DD")),
  "状态:" + prop("状态") + " | 负责人:" + 负责人文本 + " | 截止:" + 日期文本
)

从关联任务计算项目完成率

属性准备:

  • 项目数据库关联任务数据库,关联属性名为 任务
  • 任务数据库有 状态,完成状态为「已完成」
lets(
  全部任务, prop("任务"),
  总数, 全部任务.length(),
  完成数, 全部任务.filter(current.prop("状态") == "已完成").length(),
  if(总数 == 0, 0, round(完成数 / 总数 * 100) / 100)
)

显示为文本进度:

lets(
  全部任务, prop("任务"),
  总数, 全部任务.length(),
  完成数, 全部任务.filter(current.prop("状态") == "已完成").length(),
  比例, if(总数 == 0, 0, 完成数 / 总数),
  format(完成数) + "/" + format(总数) + "(" + format(round(比例 * 100)) + "%)"
)

项目健康度

属性准备:

  • 任务:关联任务
  • 任务库有 状态截止日期
lets(
  任务, prop("任务"),
  总数, 任务.length(),
  完成数, 任务.filter(current.prop("状态") == "已完成").length(),
  逾期数, 任务.filter(current.prop("状态") != "已完成" and not(empty(current.prop("截止日期"))) and current.prop("截止日期") < today()).length(),
  完成率, if(总数 == 0, 0, 完成数 / 总数),
  逾期率, if(总数 == 0, 0, 逾期数 / 总数),
  分数, round((完成率 * 0.7 + (1 - 逾期率) * 0.3) * 100),
  ifs(
    总数 == 0, style("暂无任务", "gray"),
    分数 >= 85, style("健康 " + format(分数), "green", "b"),
    分数 >= 60, style("一般 " + format(分数), "yellow", "b"),
    style("风险 " + format(分数), "red", "b")
  )
)

读书笔记字数估算

属性准备:

  • 笔记:文本
length(replaceAll(prop("笔记"), "\\s+", ""))

标签清洗

属性准备:

  • 输入标签:文本,用逗号分隔
split(prop("输入标签"), ",").map(current.trim()).filter(not(empty(current))).unique().join("、")

邮箱格式粗略校验

if(
  test(prop("邮箱"), "^[\\w\\.-]+@[\\w\\.-]+\\.\\w+$"),
  "格式正常",
  "格式可能有误"
)

说明:这是粗略校验,不等于真实邮箱可达性验证。

生成外部搜索链接

link(
  "搜索",
  "https://www.google.com/search?q=" + replaceAll(prop("关键词"), " ", "+")
)

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

最后更新于