Obsidianの埋め込みカレンダービュープラグインの紹介
Obsidianのノートにカレンダーを埋め込んで表示できるプラグインObsidian Embed Calendarを開発したので紹介します。
既存のカレンダー系プラグインはもちろん便利なのですが、自分の用途には合っていなかったため作ってみました。
プラグインの特徴
- コードブロックを書くことで、カレンダーをノートに埋め込んで表示できる
- ドラッグ&ドロップで簡単に日時を変更
- タイトル・リンクの他、追加情報も表示できる
月・週・日の表示に切り替えできます。
操作感はGoogleカレンダーのような感じです。ドラッグ&ドロップで対応するプロパティの日時を変更したり、新しいノートを作成できます。
予定のタイトルはノートへのリンクになっており、ホバーすることで中身をプレビューできます。
予定のタイトル以外にも任意の情報を表示できます。
インストール方法
※ このプラグインはまだベータ版です。
前提プラグイン
プラグインDataviewが必須です。
プラグインMetadata Menuを入れておくと、ちょっと便利になります(後述)。
本プラグイン
現在はBRATによるインストールのみ対応しています。BRATで次のURLを指定してインストールしてください。
使い方
ノートにdataviewjs
のコードブロックとして書きます。
具体的には次のように書きます。
書き方
詳しい書き方はGitHubのリポジトリに書きましたが、ここでも簡単紹介します。
第1引数は固定
第1引数のthis.container
は固定です。
第2引数はノート
第2引数にはDataviewのAPIを使ってノートのリストを渡します。
上記の例ではinbox
というフォルダ内のノートのリストを指定しています。
key | description | 必須? | example |
---|---|---|---|
file | 固定 | 必須 | p.file |
title | 予定のタイトル | 必須 | p.file.name |
allDay | 終日の予定かどうか | オプション。デフォルトはtrue | true |
metadata | 追加情報 | オプション。デフォルトはnull (非表示) | p.file.frontmatter['foo'] |
タイトル
dataviewjs
のコードブロックとして書けるため、予定のタイトルは自分で自由に処理できます。
たとえば、ノートのファイル名を予定のタイトルにするなら次のように書きます。
ノートのプロパティを予定のタイトルにするなら次のように書きます。
上記の例ではプロパティ名をtitle
としましたが、他のプロパティ名でも自由に指定可能です。
追加情報の表示
metadata
に文字列を渡すことで追加の情報として表示できます。
文字列はHTMLとして解釈されます。画像の例は次のように書きました。
プラグインMetadata MenuのAPIfieldModifier
にも対応しています。
Metadata Menuを使うことで、ノートを開かなくてもプロパティを操作できます。
画像の例は次のように書きました。
Metadata Menuを使ってノートのプロパティcheck
をチェックボックス、status
をステータスとして表示しました。これでノートを開かずにその場でプロパティを編集できます。
第3引数はオプション
第3引数はカレンダーをどのように表示するか決定するオプションを書きます。
一部を紹介します。
dateFormat
dataFormat
は必須です。日時のフォーマットを決めます。Day.jsのフォーマットにしたがって書きます。
上記は「日付」のみですが、YYYYMMDDHHmmss
のように時間も含めた指定ができます。
startKey
startKey
も必須です。予定の開始日時として扱うノートのプロパティを指定します。
endKey
endKey
は任意です。予定の終了日時として扱うノートのプロパティを指定します。endKey
を書かなかった場合、予定は「startKey
の日の終日の予定」として扱います。
idForKeepDate
idForKeepDate
は任意ですが、書いておくことを推奨します。
というのも、DataviewのAuto Refreshを有効にしているとカレンダーの表示も影響を受けるからです。
たとえば、10月→9月→8月と表示する月を変えたとき、Auto Refreshが実行されたタイミングでまた10月に戻ってしまいます。
これを防ぐのがidForKeepDate
です。
他のカレンダーと被らないような文字列を指定すればOKです。
本当はオプションではなく実装側でどうにかしたいんですけどね~。
language
language
は任意です。カレンダーの言語を指定します。
現在は次の2言語のみをサポートしています。
- en(英語。デフォルト)
- ja(日本語)
そんなわけで、カレンダーを日本語化したい場合は次のように書きます。
以上、筆者が開発したObsidianプラグインObsidian Embed Calendarの紹介でした。
ベータ版ではありますが、「とりあえずカレンダービューを表示したい!」という願望は叶えられますのでどうぞ。