ObsidianのbaseでNext Actionを使う
タスクのノート
https://gyazo.com/e41ec87c25723e784074612f69346a55
base
https://gyazo.com/aa931d23027a7b926951beaa4c2780bc
baseでは次の行動だけ表示されればよいとする。
しかし、baseではプロパティしか参照できない
なので、Next Actionをいちいちプロパティに設定する必要がある
それを半自動化する
Templaterとnote toolbarを使う
まず自動変更のTemplaterを作る
Templaterで、ページ内のチェックボックスで一番最初に見つかるものを取得する
それをプロパティのNext Actionに設定する
jsファイルとの連携でできた(by Gemini)
そのTemplaterのコマンドを、type:tasksのページのときだけ表示されるtoolbarのボタンから実行できるようにする
運用
ページ内にチェックボックスつきでタスクを書いていく
ボタンを押す→Next Actionが指定される
実行してチェックをつけたら、ボタンを押す→Next Actionが更新される
という寸法
code:sample.md
<%*
tp.hooks.on_all_templates_executed(async () => {
const activeFile = tp.file.find_tfile(tp.file.path(true));
if (!activeFile) {
new Notice("アクティブなファイルが見つかりません。", 3000);
return;
}
// ファイルの内容を読み込む
const content = await app.vault.read(activeFile);
// 未完了のタスク(- の行)を検索
// 正規表現: /^\s*-\s*\\s*\\s*(.*)$/m
const taskRegex = /^\s*-\s*\\s*\\s*(.*)$/m;
const match = content.match(taskRegex);
let nextAction = "";
if (match && match1) {
// タスクの内容(hogeの部分)を取得し、前後の空白をトリム
nextAction = match1.trim();
new Notice(「${nextAction}」をNext Actionに設定します。, 4000);
} else {
new Notice("未完了のタスクが見つかりませんでした。", 3000);
// タスクが見つからない場合は、フロントマターを空にする(または何もしない)
}
// フロントマターを設定(非同期処理)
// タスクが見つからなかった場合も、next-actionをクリアしたいなら次のブロックはそのまま残す
// 見つからなかった場合は何もしないで良いなら、if (nextAction) { ... } で囲む
await app.fileManager.processFrontMatter(activeFile, (frontmatter) => {
// nextActionが見つかったらその値を、見つからなかったら空文字を設定
frontmatter'Next Action' = nextAction;
});
});
_%>
プロジェクトもNextActonを設定しておく
https://gyazo.com/f16ac90a7319ba0e10374fb6c24679ea
#Obsidianの使い方