💭
obsidianでtemplaterとdataviewによるタスク管理
installする拡張機能
以下の拡張機能をinstall
- templater
- dataview
- DB Folder Plugin(任意・notionっぽくするなら)
templaterの設定
cmd+P で 設定画面を開き、tempalte folder locationを指定する
補足
うまく動かない時はDevToolsConsoleでエラーメッセージを確認する
View › Toggle Developer ToolsでDevToolsConsoleを開ける
templaterでtaskのテンプレを作る
例えばtask-note.mdとしてtemplaterの設定で指定したディレクトリに保存する
<%*
/* ───────── 1. 設定 ───────── */
/* 必要なプロジェクトをここに並べてください */
const PROJECTS = ["Alpha", "Beta", "Gamma"];
/* ───────── 2. 入力 ───────── */
const title = await tp.system.prompt("Task title");
/* クリックで選ぶ:初期値は先頭要素 */
const project = await tp.system.suggester(PROJECTS, PROJECTS);
const due = await tp.system.prompt(
"Due date (YYYY-MM-DD)",
tp.date.now("YYYY-MM-DD", 3)
);
const est = await tp.system.prompt("Est. hours", "2");
/* ───────── 3. ファイル名と保存先 ───────── */
const filename = title.replace(/[\\\/:*?"<>|]/g, "-"); // 禁止文字→-
await tp.file.move(`9 - neta/tasks/${filename}`);
-%>
---
created: <% tp.date.now("YYYY-MM-DD HH:mm") %>
status: "🟡 In Progress"
project: "<% project %>"
due: "<% due %>"
est: "<% est %>"
---
-
-%>
で終わることで、templaterで出力したファイルの冒頭1行を削除している -
const target = `9 - neta/tasks/${filename}.md`;
が作成先のファイルになる - cmd + Pで出てくるコマンドパレットで
Templater: Create <templateのパス>
を選択すれば新ファイルを作れる- hotkeyを登録しておくと便利
dataviewを用いる形式
tasksにtemplaterでノートを作る
```dataview
TABLE file.link AS "ノート", status, due
FROM "tasks"
WHERE status != "🟢 Done"
SORT due ASC
```
noteのupdate
タスクが終わって In Progress -> Done
にステータスを変更できるようにしたい
scripts/update-status.md
を用意し、以下のmarkdownを書く
<%*
/* ───────── 設定 ───────── */
const STATUS = ["🟡 In Progress", "🟢 Done"];
/* ───────── 現在値 & 選択 ───────── */
const current = tp.frontmatter?.status; // 既存値(無いなら undefined)
const pick = await tp.system.suggester(
STATUS, // 画面に表示するリスト
STATUS, // 返ってくる値
STATUS.indexOf(current) // 初期選択 (‑1 なら先頭)
);
/* ───────── フロントマター更新 ───────── */
const file = tp.file.find_tfile(tp.file.path(true));
await tp.app.fileManager.processFrontMatter(file, (fm) => {
fm.status = pick; // 新しい値をセット
});
new Notice(`status → ${pick}`);
%>
これをhotkeyに登録して、編集したいファイルで Templater: Insert <templateのパス>
を行えばステータスの更新ができるだろう
DB Folder Pluginを用いる形式(notionっぽくなる)
DB Folder Pluginでviewを作っても良く、よりnotionのDatabaseっぽくなる
自分はtemplater+Dataviewで満足したのでこちらは利用しないことにする
Discussion