简单快速工作流分享,上次说的不太清楚,这次上图

前几天分享过我的工作流:一个简单的工作流分享,如果你的生活没有太多要记录的东西 ,感觉说的不清楚,用图片分享一下,一看就懂。

日记中全部用无序列表记录,用标签或文件名做标记以便于后续汇总,用dataview汇总(一次书写代码,多处调用)



dataview里检索的排序和范围是什么呀 楼主还是没说清楚

dataview 代码可以分享出来么

更新:让kimi帮忙修复了安卓端排序错乱的问题,完美。

```dataviewjs
const files = app.vault.getMarkdownFiles().filter(file => file.path.includes("档案/日记")); // 文件夹路径过滤
const tag = "#日记";

let arr = files.map(async file => {
    const content = await app.vault.cachedRead(file);
    // 筛选出包含当前文件名和全角冒号的行
    let lines = content.split("\n").filter(line =>
        line.includes(dv.page(app.workspace.getActiveFile().path).file.name) && 
        line.includes(':')
    );

    // 清理行内容
    lines = lines.map(line => {
        line = line.replace(/- /g, ''); // 移除特定的前缀
        line = line.replace(/  /g, ' ').trim(); // 移除多余的空格并trim
        return line;
    });

    return ["[[" + file.name.split(".")[0] + "]]", lines];
});

Promise.all(arr).then(values => {
    // 过滤出有内容的项
    const exists = values.filter(value => value[1].length > 0);
    // 对文件名进行降序排序
    const sortedExists = exists.sort((a, b) => b[0].localeCompare(a[0]));

    // 使用DataviewJS创建表格展示结果
    dv.table(["文件", "内容"], sortedExists.map(value => [value[0], value[1].join("\n")]));
}).catch(error => {
    console.error("Error processing files: ", error);
});

已经分享代码,里面有说明

不知道能否解决排序在移动端无效的问题(pc有效)

这个dataview更适合放在[[张三]]文件中,在[[张三]]文件中,一句话代码就可以实现,这个是通用代码,放在张三、李四、王五中都可通用:

```dataviewjs
dv.table(["文件", "内容"], dv.pages('').sort(p => p.file.name,"desc").where(p => p.file.outlinks.includes(dv.current().file.link)).file.map(b=> [b.link, b.lists.where(a => String(a.outlinks).contains(dv.current().file.name)).text]))
```

这个好,不过有个问题,就是会把符合条件的条目之前的一条不符合的内容带上。

  • #日常 今天无事发生。
  • #日常 123456
  • [[张三]]:吃饭。

筛选出来的是

#日常 123456
[[张三]]:吃饭。

另外,不能使用文件调用,假如【【张三】】这样的文件有很多,我每次都要复制代码,其实有点麻烦,最好能像我本来那样,代码放在 【文件名复用代码】 这个文件里,在其他文件中使用 ![[文件名复用代码]] 调用最方便。

查出原因了,是因为我有些记录 不是无序列表,就会把上一条不符合条件的也带上,只要是无序列表就正常。

如果不想每次复制,可以用模板的方式建立,或者采用customJS插件统一管理(在其他文件中使用 ![[文件名复用代码]] 调用,有种把md当js来用了,那更应该直接使用js)。。假如张三的同名文件多,那在命名上应该要区分开 张三-北京 ,张三-上海这样。

使用![[文件名]] 调用有一个好处,就是一处修改全部更新,万一遇到这个需求(实际上我已经修改过很多次了),非常有用

customJS插件就是解决一处修改全部更新这个问题

1 个赞

看不懂插件介绍,不知道怎么用