使用Obsdian Dataview自动生成周报

【使用Obsdian Dataview自动生成周报】文章目录
需求介绍
每天的工作和学习后,会用记录一篇日报,包含当天的工作、学习等内容 。在一周、或者一个月后,需要对这些日报进行汇总,按照“工作”、“学习”、“旅游和美食”等栏目进行分类聚合,方便复盘和工作汇报需要 。
需要用到的插件和功能实现 首先需要配置好Daily Notes插件,包括存放位置和模板位置
编写上一步中配置的模板,包含“学习”、“工作”等栏目,大家可根据自己的需要进行编写 。因为基本不会出现很多级标题的情况,因此我把这些都设置成最小标题(设置1级标题会导致下一步很难看)
查询日报 。注意打开的js模式 。js查询的代码需要在代码块上标记 。使用下面的代码可列出"daily"文件夹下所有的文件名,即所有的日报 。
dv.pages('"daily"').forEach(p=>dv.paragraph(p.file.name))
筛选日报 。在pages查询和构建视图之间,可以插入一个where来进行筛选,该函数接收一个函数对象,可以筛选出符合条件的查询结果 。例如,下面的代码将筛选出最近7天的日报 。

使用Obsdian Dataview自动生成周报

文章插图
function latested_days(days){return page => {let creationTime = Date.parse(page.file.ctime);let currentTime = new Date().getTime();let daysAgo = currentTime - days*24*60*60*1000;return creationTime >= daysAgo;}}dv.pages('"daily"').where(latested_days(7)).forEach(p=>dv.paragraph(p.file.name))
将内容分类汇总在一起 。借助的內联引用功能,例如![[2023-03-29#工作]]即可把3.29的工作记录显示在当前笔记中 。在中,也提供了插入文件链接的功能,例如dv.(p.file.name, true),将把查询到的日报內联插入到当前笔记,其中第二个参数true表示內联,设为false则只是普通跳转链接 。最后,为了进行分类,需要在把和栏目标题进行拼接,即dv.(p.file.name+"#工作", true) 代码和效果
function latested_days(days){return page => {let creationTime = Date.parse(page.file.ctime);let currentTime = new Date().getTime();let daysAgo = currentTime - days*24*60*60*1000;return creationTime >= daysAgo;}}dv.pages('"daily"').where(latested_days(7)).forEach(p => dv.paragraph(dv.fileLink(p.file.name+"#工作", true)))
进一步美化