ObsidianのdailynoteにToDoを追加する
去年のこれくらいの時期にObsidianを始めたのだが、最近になってようやくdailynoteを使うようになった。 そして、そこにToDoを記載しているのだが、これを管理するための環境を整えるのがまーまー面倒だったので、ここにまとめて置く。
コミュニティプラグインのインストール
以下コミュニティのプラグインをインストールする必用がある
- Tasks
- Dataview
- Templater
Dataviewプラグインの設定
以下の設定をONにする。
- Enable inline queries
- Enable JavaScript queries
- Enable inline JavaScript queries
Templaterプラグインの設定
以下の設定をONにする
- Trigger Templater on new file creation
templateを作る
templateディレクトリを作り、その中にdailyというファイルを追加する。これの名前は何でも良い。 中身を以下にする。
# ToDo
<%*
// 1. Dataview APIの取得(待機処理付き)
const dv = app.plugins.plugins.dataview?.api;
if (!dv) {
tR += "> [!CAUTION] Dataview APIが見つかりません。設定を確認してください。";
return;
}
// 2. 設定:過去何日まで遡るか
const daysToLookBack = 7;
let allIncompleteTasks = [];
// 3. ループ処理
for (let i = 1; i <= daysToLookBack; i++) {
// 自身の日付フォーマットに合わせてここを修正(例: "YYYY-MM-DD")
const targetDateStr = tp.date.now("YYYY-MM-DD", -i);
const page = dv.page(targetDateStr);
if (page && page.file && page.file.tasks) {
// 未完了タスクを抽出
const tasks = page.file.tasks.filter(t => !t.completed);
if (tasks.length > 0) {
// タスクのテキスト部分のみを配列に追加
allIncompleteTasks.push(...tasks.values.map(t => t.text));
}
}
}
// 4. 重複の削除
const uniqueTasks = [...new Set(allIncompleteTasks)];
// 5. 出力処理
if (uniqueTasks.length > 0) {
tR += "### 前日からの引き継ぎ\n";
uniqueTasks.forEach(taskText => {
// 改行コードのミスを防ぐため、テンプレートリテラルではなく通常の結合を使用
tR += "- [ ] " + taskText + "\n";
});
} else {
tR += "### 前日からの引き継ぎ\n_未完了のタスクはありませんでした_\n";
}
%>
# 振り返り
#dailynote
コアプラグイン > デイリーノートの設定を変更する
以下の設定をする
- 新規ファイルの場所にdailynoteを指定する(dailynoteディレクトリを作っておく)
- テンプレートファイルの場所にtemplate/dailyを指定する。ここには、先程のtemplateで作成したファイル名を指定する
オプション > コアプラグインの設定を変更する
ここにデイリーノートという設定項目があり、デイリーノートを開きます。ファイルが存在しない場合には作成します。 という項目をチェックする。
まとめ
この設定をする事で、Obsidianを起動するたびにデイリーノートが開かれるようになる&ToDoで残したものを引き継いでくれる。ちなみに、このToDoを引き継ぐスクリプトはOpenAIに吐き出させたので、ブログにまとめなくても生成AIが良きに払ってくれる。便利だけれど、同時に怖いなと思っている(小並感)
コメント
コメントを投稿