notebook

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

ObsidianのTemplaterでToDoタスクの締切日をインクリメント、デクリメントできるホットキーを設定する

ObsidianでToDoを管理していて、タスクリストに[due:: 2024-04-25]といったようなラベルを用いて期限の情報を付与している

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

とりあえずデフォルトの期限は1週間後にしているが、タスク追加後に修正をしないといけないことがよくある

たとえば月末周辺とかは日付だけでなく月も修正必要な場合があり微妙な面倒さを感じていた

ということで、面倒になってきたのでTemplaterを用いてショートカットで1日ずつ増やす、減らすというスクリプトを書いた

スクリプト

  • templates/due_decr.md
<%*
  const dueLabelPattern = new RegExp(` \\[due:: (\\d{4}-\\d{2}-\\d{2})\\]`)
  
  const editor = app.workspace.activeLeaf.view.editor
  const line = editor.getLine(editor.getCursor().line)

  const matches = line.match(dueLabelPattern)
  
  const newDate = matches ? moment(matches[1]).subtract(1, 'days').format("YYYY-MM-DD") : moment().format("YYYY-MM-DD")
  const newLine = line.replace(dueLabelPattern, '') + ` [due:: ${newDate}]`

  editor.setLine(editor.getCursor().line, newLine)
%>
  • templates/due_incr.md
<%*
  const dueLabelPattern = new RegExp(` \\[due:: (\\d{4}-\\d{2}-\\d{2})\\]`)
  
  const editor = app.workspace.activeLeaf.view.editor
  const line = editor.getLine(editor.getCursor().line)

  const matches = line.match(dueLabelPattern)
  
  const newDate = matches ? moment(matches[1]).add(1, 'days').format("YYYY-MM-DD") : moment().format("YYYY-MM-DD")
  const newLine = line.replace(dueLabelPattern, '') + ` [due:: ${newDate}]`

  editor.setLine(editor.getCursor().line, newLine)
%>

インクリメント、デクリメントでほぼ同じコードだがショートカットのキーを設定できる単位がファイルの単位となるのでインクリメント、デクリメント用にファイルを用意している

ホットキー設定と設定

まず、テンプレートスクリプトをホットキー設定できるように追加

そして、ホットキー設定

とりあえず、vimでの数値増減Ctrl+a,Ctrl+xに近いようAlt+a, Alt+xを設定した

動作

これでタスクの追加後ショートカットで日付の増減を行える

使ってみたら思った以上にいい感じだった

快適