はじめに
QuickAddを使いたくなってきた。特にCapture機能。
しかし、Templater信者なのでまずはTemplaterで試してみる。
QuickAddでできてTemplaterにできないことはない(盲信)。
一例目:デイリーノートにタスクを追加する
全体のコード
const task = await tp.system.prompt("タスクを入力してください", null, true, false);
if (!task || task.trim() === "") { return; }
const today = moment().format("YYYY-MM-DD");
let file = tp.file.find_tfile(today);
if (!file) {
tp.file.create_new(`- [ ] ${task}`, today, false, "DailyNotes");
} else{
const content = await app.vault.read(file);
await app.vault.modify(file, `- [ ] ${task}\n${content}`);
}デイリーノートの最上段にタスクを追加する。
各行解説する。
入力部分
const task = await tp.system.prompt("タスクを入力してください", null, true, false);
if (!task || task.trim() === "") { return; }tp.system.promptは4変数で
- メッセージ
- デフォルト値
- 入力しなかったときにキャンセルするか
- 入力ボックスをマルチラインにするか
2行目でnullやスペースが返ったときに中断
Tfileをみつける
const today = moment().format("YYYY-MM-DD");
let file = tp.file.find_tfile(today);一行目で今日のデイリーノート名を取得する。
tp.file.find_tfileはファイル名からTfileを探してきてくれる。
Tfileを取得できるとファイルの直接編集ができる。
デイリーノートがなければ新規作成
if (!file) {
tp.file.create_new(`- [ ] ${task}`, today, false, "DailyNotes");
} tp.file.create_newは4変数で
- 本文の内容 or テンプレートになるTfile
- ファイル名
- 作ったあとに開くかどうか
- どのフォルダに作るか
デイリーノートがあれば編集
else{
const content = await app.vault.read(file);
await app.vault.modify(file, `- [ ] ${task}\n${content}`);
}app.vault.readはTfileの本文を取得する。取得だけならcachを取得するコマンドのほうが軽いが、編集する場合はこっちじゃないとだめとDeveloperページに書いてある。
app.vault.modifyで内容を編集して、入力したタスクを冒頭に追加する。
二例目:特定のノートの特定の部分に追加
ToDoという名称のファイルにタスクを羅列しているという仮定とする。
- Inbox
- タスク1
- タスク2
全体のコード
const task = await tp.system.prompt("タスクを入力してください", null, true, false);
if (!task || task.trim() === "") { return; }
let file = tp.file.find_tfile("ToDo");
if ( !file ) { return; }
const content = await app.vault.read(file);
if (!content.includes("- Inbox")) { return; }
const updatedContent = content.replace("- Inbox", `- Inbox\n\t- ${task}`);
await app.vault.modify(file, updatedContent);最後の所以外はほぼ流用できている。
ノートの内容をincludeでチェックし、replaceで置換しているだけ。
まとめ
tp.file.find_tfileでTfileを取得app.vault.readで本文を取得→好きなだけ編集するapp.vault.modifyで編集した本文を返す
おわりに
QuickAddでいいじゃんと思うかもしれないが、\tとか特殊文字は対応してないし、今後の拡張性を考慮するとやはりTemplaterがベターに思える。