读取一个文件夹下的所有日记文件,生成一个日记概览,包括日期、内容。达到类似logseq的日记效果。
安装插件:Dataview https://github.com/blacksmithgu/obsidian-dataview 开启dataviewjs功能
根目录新建文件,贴入下面代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| /** * 生成最近N天的日期数组(降序排列) * @param {number} days - 需要生成的天数 * @param {boolean} [includeToday=true] - 是否包含今天 * @returns {string[]} 日期字符串数组,格式:YYYY-MM-DD */ function getRecentDates(days, includeToday = true) { // 参数校验 if (typeof days !== 'number' || days < 1) return []; // 初始化日期对象 const date = new Date(); if (!includeToday) date.setDate(date.getDate() - 1); // 日期格式化函数 const format = d => [ d.getFullYear(), (d.getMonth() + 1).toString().padStart(2, '0'), d.getDate().toString().padStart(2, '0') ].join('_');
// 生成日期数组 const result = []; for (let i = 0; i < days; i++) { result.push(format(new Date(date))); date.setDate(date.getDate() - 1); }
return result; }
const arr = getRecentDates(200);
arr.map(d => dv.paragraph(`![[${d}]]`))
|
另一种方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| function reverseArray(arr) { const reversed = []; for (let i = arr.length - 1; i >= 0; i--) { reversed.push(arr[i]); } return reversed; }
const pages = dv.pages('"journals"').slice(-20) const a = reverseArray(pages)
a.map(async page => { const filePath = page.file.path; const fileContent = await app.vault.read(app.vault.getAbstractFileByPath(filePath)); // dv.paragraph(`![[${page.file.name}]]`); dv.paragraph(`#### ${page.file.name}`); dv.paragraph(`${fileContent}`); dv.paragraph('\n'); })
|
别的方案
Daily Notes Viewer 插件 https://github.com/Johnson0907/obsidian-daily-notes-viewer