LoginSignup
3
3

More than 5 years have passed since last update.

テキスト選択→コンテキストメニューでリマインダに登録

Posted at

リマインダ使ってますか? 必要にして十分て感じだし iOS と同期取れるし結構使えますよね。

ところで私はやることを箇条書きにしてメールでやり取りすることがよくあります。これはリマインダに登録すべきですが、一発で登録する方法がありません。実のところ、テキストを選択してコンテキストメニュー[共有]→[リマインダ]で登録できるのですが、複数行あっても一項目に押し込められてしまいます。私がやりたいのは一行につき一項目にしたいのです。

Automator や AppleScript を使えばできそうな気がしたので少し調べてみたら出来ました。

作る

まず Automator を起動してください。スクリーンショット 2016-02-05 13.14.04.png
「サービス」をダブルクリックしてください。

ライブラリから「シェルスクリプトを実行」「AppleScriptを実行」を順にダブルクリックします。スクリーンショット 2016-02-05 13.17.57.png
こんな感じの画面になります。

「シェルスクリプトを実行」は「シェル」を /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年近く経っちゃったんだ…。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3