フォルダ内のファイルをリストアップします。
MOC (Map of Contents)
長編小説を書くとき、一つのファイルに文章を書いていっても管理が大変だから、章ごとにファイルを作り、その目次となるファイルがあると便利だなと思い、作りました。 MOCファイルですよね。 章の並び順を考えるためのリスト。
TemplaterスクリプトからDataviewを呼び出す形式なので、両方必要です。
Playlist.md
Templaterに登録してお使いください。
<%* f = tp.file.title p = tp.file.folder(true) + "/" if(f == "playlist"){ s = tp.file.content if(/!\[\[/.test(s)){ s = s.replace(/!\[\[/mg, "[[") }else{ s = s.replace(/\[\[/mg, "![[") } }else{ const d = DataviewAPI.pages("") .filter(x => x.file.path.includes(p)) .filter(x => !x.file.name.includes("playlist")) .sort(x => x.file.name) .map(x => "## [[" + x.file.name + "]]") s = "Playlist\n\n" + d.join("\n") } f = p + "playlist.md" p = app.vault.getAbstractFileByPath(f) if(p){ await app.vault.modify(p, s) }else{ p = await app.vault.create(f, s) } app.workspace.activeLeaf.openFile(p) %>
使い方
スクリプトを実行すると、そのファイルと同じフォルダ内にあるファイルを列挙してplaylist.mdというファイルを作ります。
それぞれ内部リンクになっているので、そこから元のファイルを開いて推敲します。 要らなくなればリンクを消せばいいし、内部リンクを見出し扱いにしているので「アウトライン」で並べ変えることもできます。 Obsidianは、元ファイルの名前を変更しても、リンクの名前も追従して変更されるので便利。
plylist.mdでPlaylistを実行するとファイル埋め込みに変わるので、中身を見ながら全体の流れを検討できます。
問題点
本当はplaylistで実行したとき、ファイルを順番に繋いでマージファイルを作りたかったんだけど、中身の読み込み方がわからなかった。
ここは手作業かなあ。 マージしたあとWord用に変換するとかePubにするとかだと、モバイルでは完結できないし、Ulyssesを使う方が便利かも。
まとめ
MOCの下書きが簡単にできるのがポイントかな。
追記 20:30
深いフォルダだとplaylistが作れなかったりする不具合を修正しました。