今日やることリスト(プレーンテキスト+Alfred Workflow)

毎日新しいテキストファイルを作って、やることを書いて、終わったらチェックを付けてる。タスク管理のツールも色々触ったけど、プレーンテキストのテキストファイルが一番ストレスなく使える。

ファイル名は YYYY-MM-DD.md で、Markdownでチェックリストを作る。

- [ ] 牛乳を買う
- [x] ブログを書く 

問題は次の日に持ち越すのが面倒という点。手動で転記してもいいけど、Alfred の Workflow スクリプトを呼んで前日の未完了のタスクを転記することにしている。

トリガーはkeywordとsnippetの2通り用意した。keywaordはコマンドボックスにキーワードを入力して呼び出すトリガー。snippetはテキスト入力中に特定の文字列を入力すると呼び出すトリガー。出力の文字列をペーストしたい場合だとsnippetのほうが便利だ。他のツールだと「テキスト拡張」(text expansion)という名前だったりするけど、Alfred では snippet という名前のトリガーになっている。

f:id:nakaoka3:20210501191428p:plain
トリガーはkeywordとsnippetの2通り

スクリプト正規表現でマッチした行を出力しているだけ。

import os, re, datetime

def file_name():
    today = datetime.datetime.today()
    yesterday = today - datetime.timedelta(days=1)
    return yesterday.strftime('%Y-%m-%d') + ".md"

todos = []
home = os.environ['HOME']
dir = "/Dropbox/Apps/Obsidian/Default/inbox/daily/"
p = re.compile('[\s|\t]*(- \[ \].*)')
path = home + dir + file_name()

with open(path) as f:
    for line in f:
        m = p.match(line)
        if m is not None:
            todos.append(m.group(1))

print('\n'.join(todos))

Outputは Copy to Clipboard。設定で Automatically paste to front most app にしているので、フォーカスしているテキストエディタにそのままペーストされる。

f:id:nakaoka3:20210502105218p:plain
copy to clipboard の設定