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
この記事が気に入ったらサポートをしてみませんか?