Obsidian Memosの入力をAutoHotkeyで行う

AutoHotkeyなのでWindows限定のお話しです。

当日のデイリーノートにObsidian Memosの仕様でテキストを追記しているだけなので、Obsidian Memosは使ってなくても大丈夫……

直接ファイルに追記してるだけなので、Obsidianが起動していなくても動きますが、例えばSelf-hosted LiveSync利用でSync ModeがLiveSyncだとしても、Obsidianがアクティブ(最前面に表示)にしないと同期は行われませんのでご注意ください。

こんなの

仕様

  • AutoHotkeyのバージョン1.1で動作確認

  • スクリプトのファイルはUTF-8 BOM付きじゃないとTrimが正常に動かないようです

  • いつでもどこでも、Alt + Mで呼び出せます

  • 当日のデイリーノートが無い場合はテンプレートをコピーして作りますが、{{date}}など置換処理が必要なものには対応していませんので、先に手動でデイリーノートを作成してください

  • テンプレートが未設定の場合は空のファイルを作り追記します

  • スペース(全角含む)やタブしか入力されていない場合は何もしません

  • EnterでOKしたことになります(AutoHotkeyの仕様)

  • 先頭に[]または[ ]を入れるとタスクになります(半角のみ)

  • 入力された文字中にスクリプトで設定した文字列があれば<br>に置換します

ほぼ初めて作ったAutoHotkeyのスクリプトなんでおかしなとこがあると思います。利用するには設定のとこをご自分の環境に合わせてください。

; デイリーノートのファイル名をカスタマイズしている場合は要修正
; UTF-8 BOM付きで保存しないとTrimが正常に動かないようです

#Persistent
#SingleInstance, Force
#NoEnv
#HotkeyInterval, 2000
#MaxHotkeysPerInterval, 200

;SetTitleMatchMode,RegEx
;CoordMode, Mouse, Screen
FileEncoding, UTF-8-RAW ; without BOM

; 設定
; 必須
notes := "C:\Users\username\Documents\obsidian\daily notes" ; デイリーノートの保存先
; オプション(""でもOK)
template := "C:\Users\username\Documents\obsidian\templates\daily note.md" ; 置換無しの単純なテンプレのみ対応
search := "///" ; <br>に置換する文字列

!M:: ; Alt + M

FormatTime, date,, yyyy-MM-dd
note := date ".md"
file := notes "\" note

InputBox, memo , Obsidian Memos Helper, , , 500, 110

If (ErrorLevel = 0 && Trim(memo, "  `t") <> "") {
    task := ""
    StringGetPos, pos, memo, []
    If (pos = 0) {
        StringMid, memo, memo, 3
    } else {
        StringGetPos, pos, memo, [ ]
        If (pos = 0) {
            StringMid, memo, memo, 4
        }
    }
    If (pos = 0) {
        task := "[ ] "
    }

    memo := LTrim(memo, "  `t")

    If (search <> ""){
        StringReplace, memo, memo, %search%, <br>, All
    }

    If (!FileExist(file) && FileExist(template)) {
        FileCopy, %template%, %file%
    }
    FormatTime, time,, HH:mm
    text := "`n" "- " task time " " memo ; `nは改行
    FileAppend, %text%, %file% ; ファイルが存在しない場合は新規作成される
}
return

この記事が気に入ったらサポートをしてみませんか?