notebook

都内でWEB系エンジニアやってます。

ObsidianのTemplaterでToDoタスクを入力するテンプレートスクリプト

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に関するドキュメントは下記

tp.system - Templater

silentvoid13.github.io

コード量が多くないのでポイントだけ

  • await tp.system.promptで入力用のプロンプトを表示、第2引数はデフォルト値
  • tp.file.cursor()で実行後のカーソル位置を指定
    • <% tp.file.cursor() %>が出力される(テンプレートの構文)SetLine時にこれがあるとこの位置にカーソルが移動する
    • 今回の場合は行末にカーソルが行くようにした

とりあえず期限はデフォルトで1週間後を埋めるようにしている

ホットキーへの追加

操作

編集モードで/taskと入力するとコマンドのサジェストが出てくるのでタスク追加のTamplateを選択する

プロンプトが表示されるので入力する

タスク名

期限

定型のフォーマットで追加された

おわり

現状タスク追加する頻度が高いのでこういう改善も地味に効いてくる