dataview 的table 可以直观的反应文件的元数据,不过不能反应 任务的元数据,请问如何给task 也输出一个table 的样式?大概只能使用 dataviewjs, 那就求个代码吧
这个主要得看 Task 元数据怎么记录的, 假设文本形式如下 (Tasks 插件的 emoji 风格属性)
- [/] 任务测试1
- [ ] 任务测试2 没完 ➕ 2024-11-01 ⏳ 2024-11-08
- [x] 任务测试3 乙烷 ➕ 2024-11-02 🛫 2024-11-05 ⏳ 2024-11-09 ✅ 2024-11-07
则大致是用如下方式转表格
// 获取所有包含任务的文件
const files = dv.pages('"存放任务笔记的目录/子目录/"').file;
// 创建一个数组来存储任务数据
let tasks = [];
// 遍历每个文件,提取任务
files.forEach(file => {
const fileTasks = dv.page(file.path).file.tasks;
fileTasks.forEach(task => {
console.log(task);
tasks.push(
[
dv.fileLink(task.path), // 文件名
task.text.split(/[➕🛫⏳✅]/)[0], // 任务内容
task.completed ? "已完成" : "未完成", // 状态
task.created, // 创建时间
task.completed ? task.completion : "--" // 完成时间
]
);
});
});
console.log(tasks);
// 输出任务表格
dv.table(["文件名", "任务内容", "状态", "创建时间", "完成时间"], tasks);
1 个赞
好的,不过我目前是使用dataview 风格的tasks 元数据,就(due:: )或者(scheduled:: ) 这种,请问是改什么地方呢
tasks 元数据选 dataview 那几乎是一样的
// - [ ] 任务测试4 ➕ 2024-11-02
task.created // 获取创建时间
// - [ ] 任务测试5 (due::2024-11-07) 以及 (scheduled:: 2024-11-10)
task.due // 获取对应时间
task.scheduled
// - [ ] 任务测试6 ➕ 2024-11-02 (due::2024-11-07 ) 以及 (scheduled:: 2024-11-10)
task.created, task.due, task.scheduled
// 混合风格时全都可用
// dv 的 inline 属性不管有没有 Tasks 插件, 都一直生效
所以需要啥时间直接改楼上代码里
tasks.push(
[
dv.fileLink(task.path), // 文件名
task.text.split(/[➕🛫⏳✅]/)[0], // 任务内容
task.completed ? "已完成" : "未完成", // 状态
task.created, // 创建时间
task.completed ? task.completion : "--" // 完成时间
]
这一段就行
1 个赞