
【Obsidian】Daily Note内のTodoを表示するウィジェットを作ってみた【iOS】【Scriptable】
自分はObsidianのDaily Noteに今日やることをまとめているのですが、それを抜き出してホーム画面に表示できるウィジェットを作ってみました。
※2022/02/21:Obsidian Syncを使用している環境でも動作する旨を追記しました。
※2021/11/28:ちょっとアップグレードしました。詳細は更新履歴を参照。
概要
今日のDaily Noteに書いてあるタスクを…

こんな感じで表示します。


右上のアイコン(というか### Todoの行全面)をタップすると、スクリプトが再度動き、表示が更新されます。ファイルは更新したのに表示が更新されない時に使えます。
それ以外の部分をタップすると、Obsidianでデイリーノートが開きます。
ちなみに、デイリーノートがない場合は、↓の表示になります。ウィジェットをタップでObsidianが起動するので、デイリーノートを作りましょう。

なお、このウィジェットはScriptableというJavascript実行環境アプリで作成したため、動作にはScriptableのインストールが必須です。
使う前の注意点
・複数デバイスでVaultを同期させている場合、Obsidian 日本語ヘルプで言うところの「iCloud Driveによる同期」もしくはObsidian Syncで同期している環境のみ使用可能です。
また、同期をせずにiPhoneやiPad単体で運用している場合でも、使用可能です。
・Daily Noteのファイル名の形式を「YYYY-MM-DD.md」としています。形式が違う場合は、スクリプトをいじってみてください。
・「#### Todo」という行より下にあり、かつインデント無しで書かれているチェックボックスのみ抜き出すようにしています。別のものも表示させたい場合は、スクリプトをいじってみてください。
・JavascriptもURLスキームも全然わからん!という人には結構厳しいかもしれません。なるべく説明は尽くしますが、どうしてもわからんという場合はTwitter(@mint_149)に質問ください。できる範囲で対応します。
実装方法
・App StoreからScriptableをインストールします。もちろん無料です。
・Scriptableを起動し、まずは左上のボタンから設定画面→File Bookmarksを選択します。


・右上の+ボタンを押し、「Pick Folder」を選ぶと、フォルダ選択画面になります。Obsidianで使っているVaultフォルダを選択し、完了を押します。

・↑の許可設定(File Bookmarksと呼ばれています)の名前をつけるダイアログが出てくるので、適当に名前をつけ、Saveします。ここでつけた名前は後で使うので、覚えておいてください。
・Scriptableの起動時画面まで戻り、今度は右上の+ボタンで新しいスクリプトを作成します。
・↓のスクリプトを全部コピーして、貼り付けます。なお、このままでは動作しません。各ユーザの環境に合うように、2箇所修正する必要があります(**TODO**のところ)。
・上のTODO、つまり9行目を修正します。[YOUR_BOOKMARK_NAME]となっている部分を、先程bookmarkにつけた名前に置き換えます。
・次に、下のTODO、つまり13-14行目を修正します。[YOUR_DAILY_NOTES_DIRECTORY]となっている部分を、「Daily Noteを保存しているフォルダ名」+「/」に置き換えます(noteフォルダならnote/って感じ)。Vaultフォルダ直下においている場合は、空に置き換えてください。
さらに、[YOUR_VAULT_NAME]はObsidianのVaultの名前に、[YOUR_ENCODED_DAIRY_NOTES_DIRECTORY]は、先程[YOUR_DAILY_NOTES_DIRECTORY]を置き換えた文字列をURLエンコードしたものに置き換えます。
※この部分は、どこにDaily Noteを保存するかによって設定内容が異なるので、上手いこと動くまで頑張ってください。ちなみに、自分の場合は、Vaultフォルダ内にDaily Notesというフォルダを作り、そこにDaily Noteを保存しているため、こんな感じになります。

・左下のスイッチが2つ並んだようなアイコンをタップすると、このスクリプトの設定が開けます。名前とアイコンを適当に設定しましょう。
・左上のDoneでスクリプトを上書き保存します。
・ホーム画面にウィジェットを配置します。iPhoneだと3サイズ、iPadだと4サイズ選べます。どのサイズにも対応していますので、お好みで選んでください。
・ウィジェット長押し→ウィジェットを編集、で開く設定内のScriptをタップし、先程作成したスクリプトを設定します。残り2つの項目はそのままで大丈夫です。

・TODOの変更がうまく出来ている場合、ウィジェットが動作するはずです。赤字のエラーが出たり、「No daily note.」と表示される場合は、スクリプト編集画面に戻って試行錯誤しましょう。編集画面右下の再生ボタンでウィジェットの表示を更新できるので、色々試してみてください。
更新履歴
2021/11/28
デイリーノートが存在しない場合、ウィジェットをタップでObsidianが起動するようにした。これにあわせて、タップするとObsidianが開く旨の文言を追加。
デイリーノートが存在するが、iCloudからダウンロードされていない場合にエラーになる問題を修正(自動でダウンロードするようにした)。
タイトル部分をタップした時、スクリプトを再実行させるようにした。
タイトル部分の右側に更新アイコンを追加。
不要な処理を削除する等のリファクタリングを行った。
2021/11/19
公開。