dataviewjs展示文件内容到表格

需求:在使用ob一段时间之后创建了很多模板一致的笔记文件,想要创建一个类似Notion的database来展示和修改文件内容
需要安装的插件:dataview,Hover Editor
例如我有一个名为“项目管理”的文件夹(该文件夹下内容格式统一),想要以table方式展示文件名,标签,以及文件某级标题下的内容


tags: 项目
创建时间 : 2023-01-03

项目时间

项目背景

销售负责人

张三

研发负责人

李四

技术负责人

王五

工作内容

  1. 工作A
  2. 工作A
  3. 工作A

接下来就可以创建项目看板markDown文件
直接上代码

//输入目标小标题(含#),例如:#### 项目进度条
const header = '## 工作内容'
// 获取 项目管理 目录中的所有 Markdown 文件
const files = app.vault.getMarkdownFiles().filter(f => f.path.includes("项目管理"))
// app.vault.getMarkdownFiles()
//正则
const regex = new RegExp(`\n${header}\r?\n(.*?)(\n#+ |\n---|$)`, 's')

// 将带有对应header的文件以及行筛选出来
let arr = files.map(async(file) => {
const content = await app.vault.cachedRead(file)
const summary = content.match(regex)
var lines = ''
if (summary && summary[1].trim() ) {
	//或者dv.header(2, '[[' + file.basename + ']]')
	var lines = summary[1].trim()
	//console.log('lines is {}',lines)
	//console.log('file is ',"[["+file.name.split(".")[0]+"]]")
}
var filename = '项目管理/' + file.name.split(".")[0]
var time = dv.page(filename).创建时间.toString()
var tag = dv.page(filename).tags.toString()
return ["[["+file.name.split(".")[0]+"]]",time,tag,lines]
})

// 生成表格,如果要将当前的文件排除的话,请修改其中的排除文件
Promise.all(arr).then(values => {
//filter out files without "Happy" and the note with the dataview script
const exists = values.filter(value => value[1][0] && value[0] != "[[排除文件]]")
dv.table(["文件名","创建时间", "标签", "工作内容"], exists)
})

最终效果:

补充一下使用Hover Editor插件后即可在项目看板页面展示的悬浮窗上直接编辑文档内容了,超级方便

1 个赞