@柠夏2022 const pages = dv.pages(‘!“00数据管理”’) 改成 const pages = dv.pages(‘“目标文件夹相对路径或者留空” and #标签名’)
@chenlee_ob 建议不要用office处理代码
代码.txt,下载后直接复制到Ob
https://www.aliyundrive.com/s/5SDBB3btQvH
提取码: 75pb
首先还是感谢。还是觉得好复杂,现在按照你的方式一替换就出错,不改就不出错。晕。
觉得应该把文件位置、标签等都在前面定义留出接口,好比let filetags =“指定标签”。我们小白在前面改改就行了。上代码里改也没学过正则等,看着头晕眼花的。现在出错也不知道是语法,还是其它。
还请大神把代码改得清晰易读,多加些注释,谢谢啦
谢谢大佬 大佬牛逼
请教一下,我想过滤一下,
- 链接到 滴答清单 的所有笔记
- 按照字段:编码 排序
- 展示的时候隐藏标题
最终搞定, 感谢大牛:
//输入目标小标题(含#),例如:#### 项目进度条
const header = '### 正文'
// 按【路径或文件夹、文件名、标签】筛选并按修改时间降序排列
const pages = dv.pages('[[<% tp.file.title %>]]').filter(p => p.file.name.includes("") && p.file.path.includes("fn")).filter(p => p.file.name.includes("") || p.file.name.includes("")).sort(p=>p.编码,"asc");
// This regex will return text from the Summary header, until it reaches
// the next header, a horizontal line, or the end of the file
const regex = new RegExp(`\n${header}\r?\n(.*?)(\n#+ |\n---|$)`, 's')
for (const page of pages) {
const file = app.vault.getAbstractFileByPath(page.file.path)
// Read the file contents
const contents = await app.vault.read(file)
// Extract the summary via regex
const summary = contents.match(regex)
//显示全部包括空结果if (summary) {
//不显示空结果if (summary && summary[1].trim()) {
if (summary && summary[1].trim()) {
// Output the header and summary
dv.header(4, '[['+ file.basename + '|'+page.编码+' '+page.需求+']]')
//或者dv.header(2, '[[' + file.basename + ']]')
dv.paragraph(summary[1].trim())
}
}
1 个赞
你好大佬,怎么指定只查最近5天内的数据
在pages上加sort和filter函数进行过滤。
参考:
.sort(p=>moment(p.stat.mtime),'desc').filter(p=>(moment().diff(moment(p.stat.mtime),'days')<=10))
您好!我参考了您的代码,将整个代码改成了如下的形式,但报错了,请问是什么原因呢?(我的需求是从每天的日记中抽出## 今日待办这个2级标题,然后需要筛选出2023年最后一周的日记)
//输入目标小标题(含#),例如:#### 项目进度条
const header = '## 今日待办'
// 按【路径或文件夹、文件名、标签】筛选并按修改时间降序排列
const pages = dv.pages('"300生活/320日程+日记" or ""').filter(p=>(moment().diff(moment(p.stat.mtime),'days')<=10)) && !p.file.path.includes("template")).filter(p => p.file.name.includes("") || p.file.name.includes("")).sort(p=>p.file.mtime,"desc");
// This regex will return text from the Summary header, until it reaches
// the next header, a horizontal line, or the end of the file
const regex = new RegExp(`\n${header}\r?\n(.*?)(\n#+ |\n---|$)`, 's')
for (const page of pages) {
const file = app.vault.getAbstractFileByPath(page.file.path)
// Read the file contents
const contents = await app.vault.read(file)
// Extract the summary via regex
const summary = contents.match(regex)
//显示全部包括空结果if (summary) {
//不显示空结果if (summary && summary[1].trim()) {
if (summary && summary[1].trim()) {
// Output the header and summary
dv.header(2, page.file.link)
//或者dv.header(2, '[[' + file.basename + ']]')
dv.paragraph(summary[1].trim())
}
}
p.stat.mtime是用obsidian的app.vault.getFiles()获取的文件列表才能用的,文件属性是从TFile和TAbstractFile提供的属性中来获取;而用dv.pages()获取的文件属性是经过dataview插件封装过的,文件修改时间应该是p.file.mtime
收到!谢谢你哇!