Jazzと読書の日々

iPadを筆記具として使う方法を模索します

Obsidian:dataviewで簡単検索

プロパティを使う方法がおすすめ。

蔵書データベース

dataviewはdv.current()で現在ファイルのプロパティを参照できる。 これを活用してファイルの絞り込みをします。

BookBase.md

keywordというプロパティを設定します。

---
keyword:
---

```dataviewjs
const k = dv.current().keyword || ""

const d = dv.pages('"book"')
  .filter(x => (x.title + x.authors).includes(k))
  .sort(x => x.publishDate, "desc")
  .limit(100)
  .map(x => [ "![image|60]("+x.coverUrl+")", dv.fileLink(x.file.name, false, x.title), x.authors])

dv.table(["著書", "題名", "著作者"], d)
```

limit(100)で表示数を限定することにしました。

実行すると下記のようになります。

keywordに書いた言葉で絞り込みをします。 titleauthorsを対象にしてフィルターを掛けています。 この項目はお好きにカスタマイズしてください。

Table Sorting

最近見つけたプラグイン。 dataviewをソートします。

テーブルのヘッダー、たとえば「著作者」のところをタップすると「著作者名順」にテーブルを並べ替えます。 もう一度タップすると降順になる。

インストールはBRAT経由になります。

まとめ

プロパティに入力して改行で確定。 そのあと検索を始めるので、少し待たされるのがこの方法の弱点。 でも応用はしやすい。

追記

スクリプトでEvaluation Errorが出るとしたら、bookフォルダにプロパティの無いファイルが紛れ込んでいる場合と思います。 プロパティに title や authors が見当たらない状態。 Book Searchプラグインの保存先がbookフォルダである前提で組んでいます。

ただ、その場合でも「includes is not function」とは出ないので、ほかの場合も考えられます。 それが何かは思いつかないですが。