kanizaのブログ

コンピュータ、ソフトウェア、映画、音楽関連や家族のことなど、思いついたことを書きます。

タスクリストをOmniOutlinerからGmailに移動

遊びにしか使っていなかった Gmail アカウントを、「GTD with Gmail Whitepaper」を参考にしてGTD的な用途に使ってみようかなと思っている。

タスクリストは OmniOutliner に入れているんだけど、自宅のMacからしかアクセスできなかったりしてちょっと不便だった。Gmailは速いしどこでも使えるし容量もたくさんあるしということで、普通にツールとして役立ちそうだ。

OmniOutlinerにあるタスクリストをひとつひとつGmailに送るのは面倒だから、AppleScriptで自動化した。アウトライン文書から各行を取り出して、それぞれメールにしてMailに送らせている。これで100個くらいのタスクリストをさくっとGmailに移動した。そのスクリプトを載せておく。AppleScriptは普段ほとんど書かないし1回使い切りな感じなのでヘボスクリプトかもしれんけど、便利だったのでどなたかの役に立てば。

まずはポイント。

  • スクリプト中、2カ所あるyour_gmail_account @ gmail_DOT_com は各自のアドレスに直す。
  • Mac OS X の Mail で Gmail の設定をしておく。送信設定だけでも良いと思う。
  • いちばん手前で開いているアウトライン文書に対して動作する。
  • アウトラインの「トピック」の内容がSubjectになる。本文は「トピック」の内容+(もしあれば)そのノートになる。
  • チェックが入っている項目は「もう終わった項目」と見なして送信しない。

ではスクリプト本体。

tell application "OmniOutliner Professional"
   activate
   set doc to front document
   repeat with theRow in every row of doc
       if the state of theRow is unchecked then
           set theTopic to topic of theRow
           set body to theTopic & return & return & the note of theRow
            tell application "Mail"
                set theMessage to make new outgoing message with properties {subject:theTopic, content:body}
                tell theMessage
                    set sender of theMessage to "your_gmail_account @ gmail_DOT_com"
                    make new to recipient at end of to recipients with properties {address:"your_gmail_account @ gmail_DOT_com"}
                end tell
                send theMessage
            end tell
        end if
    end repeat
end tell

次回以降もまとまった量のタスクを入れる時はまずOmniOutlinerで書いてGmailに送れば楽ちんだな。そうやって繰り返し使うことになったらこのスクリプトももうちょっと改良するかも。