その他

【obsidian】ページ内のメタデータを利用し最後に言及された日付を取得する方法と言及された合計数の取得、テーブルにて日付ソート方法(Dataview利用)

この記事は約3分で読めます。

こんにちは、宮﨑です。

以前の記事にも書いたように、私の趣味はプロ野球の観戦です。

日頃からチームや選手のことについてメモツールとして利用しているobsidianに記述していっています。
そして溜まっていったメモをコミュニティプラグインのDataviewを利用しわかりやすい形に整理するようにしています。

まとめていく中で得た知見を記事にするシリーズの第3弾となります。

過去のシリーズ

第1弾

第2弾

きっかけ

第2弾で選手一覧テーブルを作成しました。

しかしそのテーブルでは並び替え等をしておらず、どう並び替えるのが最適なのかも見つけることができていませんでした。

実際使ってみると、選手の人数が多いためチェックしたい選手を見つけるのがなかなか面倒です……

選手テーブル

そこでふと思いました……第1弾のようにデイリーノートで一番新しく言及された(ファイルのリンクが張られた)ものが一番上に来るようにしよう!!おまけに最新の言及日時と言及された日付の合計も表示できるようにしたいなと。

やりたいこと

  • 最新の言及日時順で選手テーブルを並び替える
  • 最新の言及日時と言及された日付の合計のカラムを追加する

作ってみました

ちなみに言及日の日付をマウスオーバーするとその日付のデイリーノートを確認できます。

かなり苦戦しましたがなんとか作成することができました。

コードとしては下記のようになります。

```dataview
TABLE uniform_number AS "番号",
	  positions AS "ポジション",
      round((date(today) - date_of_birth).years - 0.5) AS "年齢",
      sort(file.inlinks)[length(file.inlinks) - 1] AS "言及日",
      length(file.inlinks) AS "言及数"
From "09_DB/日ハム"

Sort sort(file.inlinks)[length(file.inlinks) - 1] desc
```

最新の言及日時と言及された日付の合計にはページ上のメタデータ内にあるfile.inlinks(このファイルへのすべての受信リンクのリストを取得する)を利用しています。

Metadata on Pages - Dataview

また最新の日付を取得する方法としてはfile.inlinksで取得した際に綺麗に日付順の配列で取得することができたため、(file.inlinks)[ length(file.inlinks) -1] とすることでfile.inlinksの一番最後の要素を指定し表示させています。

作ってみた感想

メタデータがめちゃくちゃ便利です。dataviewで何か作りたい際には必ず一度確認した方が良いと思います。

あまりリンクが貼られた数を集計したりする記事が見つからなかったため、この記事が誰かの助けになっていれば幸いです。