#Templater ## 経緯 [[Obsidian]]の[[デイリーノート]]に以下を記録したい。 - その日に作成したNoteの一覧とリンク - その日に修正したNoteの一覧とリンク ## 方法 [[Templater]]プラグインを使って自動出力する。以下のコードをTemplateに登録する。 ```javascript <%* const thisDay = this.app.workspace.getActiveFile().basename; const start = moment(thisDay).valueOf(); const end = moment(start).endOf('day').valueOf(); const isCreated = (file, start, end) => file.stat && file.stat.ctime >= start && file.stat.ctime <= end; const isModified = (file, start, end) => file.stat && file.stat.mtime >= start && file.stat.mtime <= end; const isUpdated = (file, start, end) => isModified(file, start, end) && !isCreated(file, start, end); const isPublicNote = (file) => !file.path.startsWith("_") && file.extension === "md"; const groupBy = (values, toKey) => values.reduce( (prev, cur, _1, _2, k = toKey(cur)) => ( (prev[k] || (prev[k] = [])).push(cur), prev ), {} ); const files = Object.values(this.app.vault.fileMap); tR += "\n\n----\n\n" tR += "## Created" const created = groupBy( files.filter(x => isCreated(x, start, end) && isPublicNote(x)), x => x.parent?.name, ); Object.entries(created).map(([dir, files]) => { tR += `\n\n### ${dir}\n\n` tR += files.map(x => `- [[${x.basename}]]`).join("\n"); }) tR += "\n\n----\n\n" tR += "\n## Updated" const updated = groupBy( files.filter(x => isUpdated(x, start, end) && isPublicNote(x)), x => x.parent?.name, ); Object.entries(updated).map(([dir, files]) => { tR += `\n\n### ${dir}\n\n` tR += files.map(x => `- [[${x.basename}]]`).join("\n"); }) %> ``` あとは名前をつけて実行する。私の場合は`Daily Note Retrospective`にした。 ## 出力イメージ カーソル位置に以下のプレビュー相当が出力される。見出し3はファイルが存在するディレクトリ名。rootの場合は何も空行として扱われる。 ![[2021-05-30_23h46_06.png]]