リマインダ使ってますか? 必要にして十分て感じだし iOS と同期取れるし結構使えますよね。
ところで私はやることを箇条書きにしてメールでやり取りすることがよくあります。これはリマインダに登録すべきですが、一発で登録する方法がありません。実のところ、テキストを選択してコンテキストメニュー[共有]→[リマインダ]で登録できるのですが、複数行あっても一項目に押し込められてしまいます。私がやりたいのは一行につき一項目にしたいのです。
Automator や AppleScript を使えばできそうな気がしたので少し調べてみたら出来ました。
作る
まず Automator を起動してください。
「サービス」をダブルクリックしてください。
ライブラリから「シェルスクリプトを実行」「AppleScriptを実行」を順にダブルクリックします。
こんな感じの画面になります。
「シェルスクリプトを実行」は「シェル」を /usr/bin/ruby
にして以下のように入力します。
# coding: utf-8
STDIN.read.force_encoding("UTF-8").split(/[\n\r]+/).each do |f|
line = f.sub(/^[*・]\s*/, '')
next if line.empty?
puts line
end
これは各行の頭から「*」や「・」を取り去っています。プレーンテキストで箇条書きをするときはこれらの文字を行頭につけることが多いですが、リマインダに登録するときは邪魔だからです。
そして「AppleScriptを実行」には以下のように入力します。
on run {input, parameters}
set ListName to "Import"
set entries to input
tell application "Reminders"
if (not (list ListName exists)) then
make new list with properties {name:ListName}
end if
set mylist to list ListName
tell mylist
repeat with i in entries
make new reminder with properties {name:i}
end repeat
end tell
end tell
return input
end run
そして保存してください。名前は「リマインダへimport」とかでもしてください。
使う
適当にテキストを選択してコンテキストメニューを表示 (右クリックや二本指クリック) すると「リマインダへimport」があるはずです。それを選択してください。
リマインダを開くと「Import」というリストがあるはずです。そこに先ほど選択したテキストが一行一項目として登録されているはずです。あとは適当なリストに振り分けてください。
とりあえずテキストを選択してリマインダに登録、その後リマインダ上で整理というワークフローを想定しています。
以前は一行ずつリマインダへコピペしていた作業がたいへん楽になりました。
Automatorについて
いろいろ便利なんですが各行ごとにループして処理とか複雑なことはできません。ですがサービスやらアプリケーションやらを簡単に作れてシェルスクリプトとの受け渡しをしてくれるので、これに外側の処理を任せると osx の GUI を使った便利な機能が比較的簡単に実現できます。
今回はアプリケーションの操作があったので AppleScript を使いましたが、いろいろ癖がある文法で大変でした。30年近く前に HyperTalk をいじくっていたから楽勝かと思っていたらそんなことありませんでしたw そうかHyperCard の衝撃からもう30年近く経っちゃったんだ…。