图片展示与跳转 展示图片

Notion 任务状态提示终极版

简介

这个 Notion 函数可以帮助你自动判断任务的状态、截止日期和完成情况,并以不同颜色和图标直观显示。它能够显示任务是否按时完成、提前完成、逾期完成,或者对于未完成的任务,显示剩余时间或已逾期时间。

Notion 任务状态提示终极版插图
Notion 任务状态提示终极版插图1

设置方法

1. 创建必要的字段

确保你的 Notion 数据库中有以下属性,名称必须完全一致

  • 排期(类型:日期)
  • 状态(类型:状态)
  • ⁠完成日期(类型:日期)

2. 设置状态字段

在⁠状态属性中,添加以下选项:

  • ⁠收集
  • 搁置
  • 待办
  • 执行中
  • ⁠完成
  • ⁠放弃
Notion 任务状态提示终极版插图2

可以根据个人喜好为这些状态设置不同的颜色。

3. 创建函数字段

  • 添加一个函数字段
  • 将属性命名为⁠逾期提醒(或你喜欢的任何名称)
  • 选择属性类型为⁠公式
  • 在公式编辑框中粘贴以下代码

你也可以加入我的 知识星球,免费获取本站分享的所有 Notion 技巧/模板/函数用例/更新咨询

设置完成后,函数会根据任务的状态、排期和完成日期自动显示不同的提示。

判断逻辑

Notion 任务状态与逾期判断函数流程图 (v16.2)

Notion 任务状态与逾期判断函数流程图 (版本 v16.2)

开始: 获取属性值
计算基本变量: schedule = prop("排期"), status = prop("状态"), completionDate = prop("完成日期"), nowDate = now(), isScheduleEmpty = empty(schedule), isCompletionDateEmpty = empty(completionDate)
检查时间精度: hasScheduleTime = not isScheduleEmpty and formatDate(dateEnd(schedule), "HH:mm") != "00:00", hasCompletionTime = not isCompletionDateEmpty and formatDate(completionDate, "HH:mm") != "00:00", shouldShowDetailedTime = hasScheduleTime or hasCompletionTime
主要判断: 任务状态 (status) 是什么?
条件: status == "放弃"
判断: 完成日期是否为空? (isCompletionDateEmpty)
是 (完成日期为空)
🚫 已放弃
否 (完成日期不为空)
✅ 已完成 · 请修改任务状态
条件: status == "完成"
计算变量: deadline = if(isScheduleEmpty, "", dateEnd(schedule))
完成状态内部判断 (基于排期和完成日期是否为空)
条件 1: isScheduleEmpty and isCompletionDateEmpty (排期和完成日期都为空)
✅ 已完成
条件 2: isCompletionDateEmpty (完成日期为空, 排期不为空)
✅ 按时完成
条件 3: isScheduleEmpty (排期为空, 完成日期不为空)
✅ 已完成
条件 4: 排期和完成日期都不为空
判断: 完成日期 vs 截止日期
completionDate > deadline (逾期完成)
计算时间差: diff_minutes = dateBetween(completionDate, deadline, "minutes"), days = floor(diff_minutes / 1440), hours = floor(mod(diff_minutes, 1440) / 60), minutes = mod(diff_minutes, 60)
✅ 完成 · 逾期X天X小时X分钟
completionDate == deadline (准时完成)
✅ 按时完成
否则 (提前完成)
计算时间差: diff_minutes = dateBetween(deadline, completionDate, "minutes"), days = floor(diff_minutes / 1440), hours = floor(mod(diff_minutes, 1440) / 60), minutes = mod(diff_minutes, 60)
🎉 提前X天X小时X分钟达成
条件: 其他活动状态 (收集, 搁置, 待办, 执行中)
判断: 排期是否为空? (isScheduleEmpty)
是 (排期为空)
⚪ 未设置排期
否 (排期不为空)
计算变量: deadline = dateEnd(schedule)
判断: 完成日期是否已填写? (not isCompletionDateEmpty)
是 (完成日期已填)
判断: 是否按时/逾期完成? (completionDate )
是 (按时/准时)
✅ 已完成 · 请修改任务状态
否 (逾期)
❗ 已逾期完成 · 请修改任务状态
否 (完成日期未填)
判断: 日期状态 (今天/明天/超期/剩余)
formatDate(nowDate, "YYYY-MM-DD") == formatDate(deadline, "YYYY-MM-DD") (今天截止)
⚠️ 今天截止
formatDate(nowDate, "YYYY-MM-DD") == formatDate(dateAdd(deadline, -1, "days"), "YYYY-MM-DD") (明天截止)
🔔 明天截止
nowDate > deadline (已超期)
判断: 是否应显示详细时间? (shouldShowDetailedTime)
是 (有具体时间)
计算时间差: diff_minutes = dateBetween(nowDate, deadline, "minutes"), days = floor(diff_minutes / 1440), hours = floor(mod(diff_minutes, 1440) / 60), minutes = mod(diff_minutes, 60)
⏰ 已超期X天X小时X分钟
否 (仅日期)
计算天数差: overdueDays = dateBetween(dateStart(nowDate), dateStart(deadline), "days")
⏰ 已超期X天
否则 (即将到来)
判断: 是否应显示详细时间? (shouldShowDetailedTime)
是 (有具体时间)
计算时间差: diff_minutes = dateBetween(deadline, nowDate, "minutes"), days = floor(diff_minutes / 1440), hours = floor(mod(diff_minutes, 1440) / 60), minutes = mod(diff_minutes, 60)
days == 0 and hours (不到一天)
⌛ 剩余X小时X分钟
否则 (一天以上)
⏳ 剩余X天X小时X分钟
否 (仅日期)
计算天数差: remainingDays = dateBetween(parseDate(formatDate(deadline, "YYYY-MM-DD")), parseDate(formatDate(nowDate, "YYYY-MM-DD")), "days")
remainingDays == 2 (后天)
🗓️ 后天到期
否则 (其他天数)
⏳ 剩余X天

状态显示示例

已完成任务

✅ 已完成
✅ 按时完成
🎉 提前2天达成
🎉 提前3天11小时达成
✅ 完成 · 逾期1天
✅ 完成 · 逾期13小时
✅ 完成 · 逾期28天13小时

活动中任务

⚠️ 今天截止
🔔 明天截止
🗓️ 后天到期
⏳ 剩余3天
⏳ 剩余4天
⏰ 已超期1天
⏰ 已超期2天

特殊状态

🚫 已放弃
⚪ 未设置排期
✅ 已完成 · 请修改任务状态
❗ 已逾期完成 · 请修改任务状态

本站所有文章,除非特别说明或标注,均为本站原创发布。转载本文需附上本文链接,未经授权,禁止大篇幅复制、盗用、采集或发布本站内容至其他网站、书籍等各类媒体平台。

AI笔记实操技巧

Obsidian Copilot 插件教程:Ollama 本地离线部署指南

2025-2-25 19:56:42

我的视频

【视频】爆肝60天!也许是B站最强的 wolai 笔记产品测评教程

2022-9-15 18:01:00

图片展示与跳转 展示图片

欢迎订阅我的 Notion 课程

一站式学习,从入门到精通

X