早上好,我是まさきん。
用Notion管理家里的任务时,有先后顺序的事情总是不好处理。明明前一项没做完就没法动手,它们却一起排在“今天要做”里。这次我给Notion的任务加上了“前置任务”,做成前一项完成的瞬间、下一项就会出现的形式。下面整理一下做法。
※以上为文章发布时的信息。最新条件请以官方网站为准。
- 在Notion里实现“前一项完成后再显示下一项”,可以用自关联+汇总+公式来做
- Notion官方的“依赖关系”是用来在时间线上画箭头、顺延日期的功能
- 如果想把还不能着手的任务从“今天要做”里拿掉,我觉得自己搭建更好用
- 步骤分4个阶段:添加关联→汇总→公式→带筛选的视图
- 通过MCP让AI创建列时,有时会出现重复的列,需要注意
前置任务这个思路
我们家用Notion的Tasks数据库管理家里的任务。不过,之前并没有“前置任务”这个概念。所有任务平铺在一起,顺序全靠脑子记。
比如,“索取文件”没完成,就没法“填写文件”。我想把这种顺序信息放进数据库里。想做的事只有一件:前一个任务完成的瞬间,下一个任务就出现在“今天要做”这边。仅此而已。
先写了设计页面
我没有一上来就加列,而是先写了一页设计文档。把拿不准的论点列出来,一问一答地逐个决定,定好之后才开始实现。
拿不准的点,比如下面这些:等待前置的任务要隐藏到什么程度?如果先完成了后续任务,前置任务怎么处理?后续任务可以着手时要不要通知?要不要给所有任务都加前置任务?我觉得先把这些判断写成文字,实现过程中就不容易摇摆。
规则没人遵守的事,我在清点164个任务的文章里也写过。这次我特别注意的是“把决定好的事嵌进机制里”。
Notion官方的依赖关系能做什么
其实Notion本身就有一个叫“依赖关系”的功能。根据官方帮助,在数据库设置里依次进入“更多设置”→“依赖关系”即可启用。
启用后,可以把任务之间按直线串联起来。官方指南说,在时间线视图中把光标移到任务上,右侧会出现箭头。拖动这个箭头连到另一个任务上,就建立了依赖。说明中提到,这种依赖关系只会显示在时间线视图里。
从机制上看,它是建立在关联属性之上的。如果没有关联属性,会提示你创建一个,默认是名为“Dependencies”的自关联。英文界面下会生成“Blocked by”和“Blocking”两列。
日期的自动顺延可以从以下3种中选择。
- 仅在日期重叠时顺延
- 保持项目之间的间隔并顺延
- 不自动顺延
另外还可以选择开启或关闭“避开周末”。前一个任务推迟一周,后面的也跟着推迟一周——这个功能适合这样的用法。
官方功能与自己搭建的区别
我想要的并不是顺延日期的功能,而是把还不能着手的任务从“今天要做”里拿掉。于是我把两者比较了一下。
| 项目 | Notion官方的依赖关系 | 自己搭建(关联+汇总+公式) |
|---|---|---|
| 设置位置 | 数据库设置→更多设置→依赖关系 | 自己添加属性 |
| 呈现方式 | 时间线视图中的箭头 | 表格、列表等任何视图中都能以列的形式看到 |
| 日期自动顺延 | 可从3种中选择,有避开周末的设置 | 无(需要自己做) |
| 前一项是否完成 | 官方帮助中没找到判定列的说明 | 用汇总统计未完成数 |
| 从今天要做中拿掉 | 官方帮助中没找到相关功能的说明 | 可用公式和筛选拿掉 |
| 适合的用途 | 团队的工序表、日程管理 | 个人或家庭选择“下一步做什么” |
我觉得官方的依赖关系是用来守住日程的工具。而我家的任务里,很多是没有截止日期的。所以比起日期,我更想看的是“现在能不能着手”。两者没有优劣之分,也许只是目的不同。
自己搭建的机制全貌
在自己搭建的方案里,我给Tasks加了3列,并修改了1个已有的公式。新加的只有2个关联列和1个汇总列。
| 列名 | 类型 | 作用 |
|---|---|---|
| 前置任务 | 关联(自关联、双向) | 在这个任务之前要做的事 |
| 后续任务 | 关联(自关联、双向) | 在这个任务之后要做的事 |
| 前置未完成数 | 汇总 | 前置任务中尚未完成的数量 |
| 可否着手 | 公式(修改已有的) | 增加“等待前置”的判定 |
自关联是在同一个数据库内把页面彼此关联起来。官方帮助说明,开启“Two-way relation”后,会生成2个独立的属性。举的例子是“Next task”和“Previous task”。在其中一边添加,另一边也会自动更新。
可以照着做的搭建步骤
如果在一般的Tasks数据库里搭建,我觉得按下面的顺序比较好理解。这里以状态中有“完成”为前提。
- 在Tasks中添加一个新属性,类型设为“关联”
- 关联对象选择当前正在操作的Tasks本身
- 开启“Two-way relation”,分别命名为“前置任务”“后续任务”
- 新建一个公式列,完成时返回0,未完成时返回1(例: 未完成标记)
- 添加汇总,对“前置任务”的“未完成标记”求和
- 把这个汇总命名为“前置未完成数”
- 创建公式“可否着手”,当前置未完成数大于等于1时返回“等待前置”
- 在“今天要做”视图的筛选中加上“可否着手不是等待前置”
- 按项目划分的视图不加这个筛选
步骤4和5也可以只用公式来统计。官方帮助里有对关联页面列表使用 .every() 和 current 的例子。无论用汇总还是公式,都能统计前置任务的状态。
有一点需要注意。根据官方帮助,汇总不能再被汇总,这是为了避免循环引用。所以统计的对象最好设为非汇总的列,这样比较保险。
可否着手公式的思路
我家的Tasks里原本就有一个叫“可否着手”的公式。这次在里面加上了“等待前置”。思路很简单。
如果前置未完成数大于0,就返回“等待前置”;否则,直接返回原来的判定结果。按这个顺序写,就不会破坏已有的规则。公式示例大致如下。
if(prop("前置未完成数") > 0, "等待前置", 现有的判定)
“现有的判定”部分,请根据各自的Tasks改写。我认为诀窍在于最先判定“等待前置”。
定下的显示规则
在设计页面里定下的显示规则如下。先决定哪个画面显示什么,筛选就不会乱。
| 画面 | 等待前置的任务 |
|---|---|
| 今天要做 | 原则上不显示。只有截止日期在今天及以前的,以浅色显示在末尾 |
| 今天能做 | 不显示 |
| 手机端 | 不显示 |
| 按项目 | 全部显示 |
只有截止日期在今天及以前的任务,我决定不完全隐藏。因为期限到了却看不见,就没法察觉。不过它们不是主角,所以以浅色放在末尾。
如果想用Notion的视图实现类似效果,可以用高级筛选。官方帮助说,筛选组可以组合AND和OR,最多能设置3层。
当你开始用手机打理家里的事务,手机就会变成安排家人日程的工具。这样一来,通信费也值得重新审视一次。
完成与通知的规则
先完成了后续任务时
现实中,也会有前置任务还没做完、后续任务却先完成的情况,比如不小心先填好了文件。这种时候,我决定不自动把前置任务标记为完成。
取而代之的是,在完成后续任务时询问一下。选项有“一起完成”“暂缓”“保留”3个。之所以不自动处理,是因为前置任务的内容是否真的完成了,只有人才知道。
不发通知,只弹出提示
后续任务可以着手时,我不发Telegram通知。这也是在设计页面里纠结过的地方。通知一多,重要的通知可能就会被淹没。
取而代之的是,我在自己做的手机页面(PWA)上弹出提示(toast)。完成前置任务后,只会在画面下方显示“下一项: ○○”。顺便一提,我给这个PWA起名叫Kairos。意思是“时机成熟之时”,我觉得很符合前置任务完成、轮到下一项登场的感觉。
早上安排事务的事,我在今日简报的文章里也写过。除了通知之外,很多信息只要在打开画面时能看到就足够了。
前置任务只加在主要项目上
我只给主要项目加了前置任务,而且也是一问一答地逐条设置。没有让AI一次性推测并批量添加。
批量添加的话,混进错误的顺序时很难发现。由于等待前置的任务会从清单上消失,一旦出错,需要的任务就会看不见。所以我认为这里值得多花点功夫。
用API依次追溯前置任务
我自己做的小API里也加了一个处理:对某个任务,依次返回尚未完成的前置任务。前置的前置、再往前的前置,最多追溯到10层。
为了在中途出现循环时停下来,我还加了循环检测,也就是A的前置是B、B的前置又是A这种状态。我用A→B→C这3个测试任务确认了运行情况。确认完之后,就把测试任务删掉了。
在MCP和API上踩过的坑
这次最花时间的就是这里。用Notion的MCP(让AI操作Notion的连接)创建列时,出现了几个意料之外的情况。
- 用MCP的DDL创建双向关联时,出现了“前置任务 1”“后续任务 1”这样的重复列对
- 想通过重命名修复,结果又冒出了“前置任务 2”
- 汇总没有加在前置那一侧,而是加到了后续那一侧
- 修改公式时报“Type error”,无法通过
- 公式的内容无法通过MCP读取,只能用REST API确认
最后,我通过删除多余的列并重命名把它整理好了。公式则是用Notion REST API的PATCH修正的。
官方文档说明,通过更新数据源的属性,可以添加、删除、重命名列。给值传null就会删除该列,传name就会改名。据说重命名后ID不会改变。
公式用名为expression的字符串来指定。文档写着,无法解析的公式会返回validation_error。保存后的公式是通过列的ID来引用的,所以之后即使改名也不会出错。
双向关联的type设为dual_property,单向则是single_property。关联的数据库也必须共享给连接方。据说如果共享不足,关联可能会显示为空,汇总的结果也会不完整。
通过AI创建列之后,建议一定要在Notion的画面上亲眼确认一遍列的列表。看看有没有多出同名加数字的列,以及汇总加在了哪一列上,这样会比较安心。
开始之前要确认的事
如果你接下来要搭建,先确认以下几点会比较顺利。
- 是否有能判定完成的状态或复选框
- 是否已决定是要顺延日期,还是要从今天的清单中拿掉
- 是否已区分隐藏等待前置任务的画面和全部显示的画面
- 是否已决定先完成后续任务时如何处理
- 如果用AI或API创建列,之后是否有时间在画面上确认列
常见问题
Q. 只用Notion官方的依赖关系不够吗?
如果是管理日程,官方的依赖关系也许就够了,因为它有时间线上的箭头和日期自动顺延。另一方面,假如你想把还不能着手的任务从清单里拿掉,那么自己搭建的列会很方便。
Q. 官方的依赖关系在哪个视图里能看到?
官方指南说明,依赖关系只显示在时间线视图里。如果想在表格或列表中看到前置任务,就需要显示关联列。
Q. 双向关联是必需的吗?
不是必需的,但有了会轻松很多。在自关联中开启Two-way relation,就会生成前置和后续2列。在其中一边填入,另一边也会自动填好。
Q. 不用汇总、只用公式也能做吗?
我觉得可以。官方帮助里有用 .every() 检查关联页面列表的公式示例。不过,把列拆开可以看到中间的数字,也许更方便确认。
Q. 前置任务还没完成就先完成了后续任务,会怎样?
Notion这边并不会自动发生什么。我的做法是,在当下询问“一起完成、暂缓、保留”。我没有让前置任务自动变为完成。
Q. 能用API改写公式吗?
官方文档说明,公式的定义可以用名为expression的字符串来指定。无法解析的公式会返回validation_error。我用REST API的PATCH修正了在MCP上无法通过的公式。
Q. 应该给所有任务都加前置任务吗?
个人认为,只给主要项目加就足够了。等待前置的任务会从清单中消失,如果加错了,需要的任务就会看不见。先从顺序明确的任务开始,应该比较好吧。
参考的官方信息
- Notion的子项目与依赖关系(Notion 帮助)
- Break tasks into manageable steps with sub-tasks and dependencies(Notion 指南)
- Notion 2.19 版本说明(子任务与依赖关系)
- 数据库的关联与汇总(Notion 帮助)
- 公式(Notion 帮助)
- 视图、筛选、排序(Notion 帮助)
- Update a data source(Notion Developers)
- Update data source properties(Notion Developers)
- Property schema object(Notion Developers)
- Notion MCP(Notion Developers)
总结
在Notion里实现“前一项完成后再显示下一项”,我用的不是官方功能,而是自己搭建的列。我觉得官方的依赖关系作为顺延日程的工具很出色。不过,要选出家里“下一步做什么”,另一种形式更合适:统计前置未完成数,再从清单中拿掉。
搭建时,建议先在设计页面里定好规则:显示在哪里?先完成了后续任务怎么办?要不要通知?这些定下来之后,加列的工作量其实并不大。
如果通过AI创建列,请务必留出最后在画面上确认的时间。如果你家里有很多讲究顺序的事务,也许值得一试。
如果用手机打理家里的事务,每个月的通信费也最好看一眼,这样更安心。我家的例子写在清点手机线路的文章里。
本文包含联盟营销广告。如果您通过本站链接申请相关商品或服务,我们可能会从合作企业获得报酬。此外,运营者是乐天集团的员工,也可能通过员工推荐计划获得报酬。文章内容与评价均基于运营者的真实体验与调查完成,与是否存在广告无关,但请您在阅读前了解上述关系。详情请参阅免责声明与联盟营销说明。 免责声明与联盟营销说明
本文包含机器翻译内容。正式条件请以乐天移动官方网站的多语言页面为准。
如果您对乐天移动的通信区域·信号状况有疑问,可以通过官方的 电波改善调查申请表 进行咨询。