Templaterでtp.system.prompt
が使ってみたかったので題材探して使ってみた
自分はObsidianでタスク管理をしている
物によっては期限があるので[due:: 2024-04-25]
といったようにいつまでに消化するべきタスクかというのを判断できるようにラベルを付与していることが多い
そして、忘れないために小さなことでも追加するようにしているので割と入力する頻度が高い
そうなると、このラベルを手動で毎度入力するのは面倒になってくる
ということでTemplaterのアクションを使って登録できるようにした
スクリプト
- templates/task.md
<%* const editor = app.workspace.activeLeaf.view.editor const task = await tp.system.prompt("Enter Task") const due = await tp.system.prompt("Enter Due Date", tp.date.now("YYYY-MM-DD", 7)) const newLine = due ? `- [ ] ${task} [due:: ${due}]${tp.file.cursor()}` : `- [ ] ${task}${tp.file.cursor()}` editor.setLine(editor.getCursor().line, newLine) %>
promptに関するドキュメントは下記
コード量が多くないのでポイントだけ
await tp.system.prompt
で入力用のプロンプトを表示、第2引数はデフォルト値tp.file.cursor()
で実行後のカーソル位置を指定<% tp.file.cursor() %>
が出力される(テンプレートの構文)SetLine時にこれがあるとこの位置にカーソルが移動する- 今回の場合は行末にカーソルが行くようにした
とりあえず期限はデフォルトで1週間後を埋めるようにしている
ホットキーへの追加
操作
編集モードで/task
と入力するとコマンドのサジェストが出てくるのでタスク追加のTamplateを選択する
プロンプトが表示されるので入力する
タスク名
期限
定型のフォーマットで追加された
おわり
現状タスク追加する頻度が高いのでこういう改善も地味に効いてくる