0
ObsidianのDataviewプラグインでブログネタリストを収集する
2022-12-17

Obsidianでメモを残し始めている

技術的な内容のメモを書いていると「これはブログネタになるかも」みたいなのが湧いてくることがある

そういう時にさっと内部リンクをつけてメモを残しておく+その内容をまとめてどこかで閲覧できると良いなと思ったのでDataviewプラグインでやってみた

Dataviewプラグイン

Dataview

記事のfrontmatterやタグ、ディレクトリなどの情報をもとにテーブル表示してくれるプラグイン

コードブロックにdataviewを指定することで表示してくれる

クエリはSQLライクな書き方で問い合わせする

FROMにはページのリストの単位、特定のタグやディレクトリなどを指定する

条件などにファイルの更新日、ファイル名などファイルのメタデータも含められるためある程度なんでもできそう

またSQLライクな書き方以外にもJavaScriptを書くこともできる

その場合はコードブロックにdataviewjsを指定する

ブログネタのリストをタスクリストとして表示させる

サンプル用に次のようなメモを用意した

  • 2022-11-29.md
## ToDo
- [x] [[blog]] netaA
- [ ] [[blog]] netaB
- [ ] netaC
  • sample.md
- [ ] [[blog]] xをyしてzする
  • コードブロックの中身
dv.taskList(dv.pages("[[blog]]").sort(p => dv.date(p.file.ctime), 'desc').file.tasks.where(t => !t.completed && t.outlinks.some((l) => l.display == 'blog')), false);
  • dv.pages[[blog]]の内部リンクが存在するページを取得
  • 最新のファイルから走査するようにソート
  • file.tasks.whereでチェックボックスのリストから特定条件のタスクを取得
    • 未チェック
    • file.outlinksの中からdisplayプロパティがblogなタスクをチェックする
  • dv.taskListは第2引数でページごとにグループ化するかどうかのオプションを渡せる(defaultはtrue)、falseを渡すと単純にページをまたいでまとめたリストとして表示できる

fileオブジェクトの中身

確かプラグインのドキュメントにも乗っていた気がするが確かめながらでもできる

こんな感じのクエリを書くと

TABLE
file.tasks
FROM [[blog]]
SORT file.ctime DESC

alt

このようにオブジェクトの中身を表示できる

もしくは、dataviewjsのコードブロックのJavaScript中にconsole.log()を仕込み、DeveloperToolsでオブジェクトの中身を覗くことができる

dv.taskList(
  dv.pages("[[blog]]").sort(p => dv.date(p.file.ctime), 'desc').file.tasks.where(t => {
  console.log(t);
  return !t.completed && t.outlinks.some(l => l.display == 'blog')
}), false);

alt

こんな感じで中身見ながらやるとある程度クエリが書けるようになる気がする

表示

ほぼ同じクエリでt.completedに条件を変えた(チェックした)リストも追加するとこんな感じで表示できる

alt

0

Profile

swfz
swfz
日々学んだことを残していく
Today I Learned
コード片置き場

Account

RSS

Powered by Pixela
© 2024. swfz