Obsidian 技巧:如何让今日笔记自动继承昨日未完成的任务。

代码链接: daily

00:00 日记做任务管理 00:12 自动继承任务 01:03 效果演示

后续优化

daily模板增加scheduled 模块,用以显示定期任务

const date = dv.date(dv.current().file.name);
if (date) {
  const scheduledTasks = dv.pages().file.tasks
    .where(t => !t.completed && t.scheduled && t.scheduled <= date)
    .sort(t => t.scheduled, 'asc');
 
  const todayTasks = scheduledTasks.where(t => t.scheduled.equals(date));
  const carriedTasks = scheduledTasks.where(t => t.scheduled < date);
 
  if (todayTasks.length > 0) {
    dv.taskList(todayTasks, false);
  }
 
  if (carriedTasks.length > 0) {
    dv.taskList(carriedTasks, false);
  }
 
  if (todayTasks.length === 0 && carriedTasks.length === 0) {
    dv.paragraph("(无 scheduled 任务)");
  }
}

答疑

为什么不用Rollover Daily Todos来实现继承昨日任务?

评论区有小伙伴提问为什么不用Rollover Daily Todos实现继承昨日任务,本想直接回复,但是我的b站评论区不能发图,索性做个专题来回答吧.

  1. 我在做这个的时候只是想着把功能实现,没去检索是否已有插件实现类似功能.
  2. 我去安装Rollover Daily Todos试了下, 该插件目前存在的问题:
  • 所有任务集中显示在了一起
  • 不能显示scheduled模块的定期任务

示例图

核心功能

  • 自动回溯:自动从上一个有记录的日期读取内容,不怕跳过几天没写
  • 今日目标:上一天的”明日目标”自动成为今天的起点
  • 往日目标:跨日期汇总往日的“今日目标”和“往日目标”,重要的事不会被遗忘
  • 延续记录:今日记录和延续任务中未完成的部分,自动携带到新一天
  • 自动去重:跨区块智能去重,同一件事不会重复出现两次
  • Scheduled 看板:用 Dataview 展示所有到期或过期的计划任务
  • 来源标注:若数据来自两天前,自动标注”来自 XX(N 天前)”