ToDo 管理

今日も昨日に引き続き Mac ネタ.ただし,iPad も絡みます.

現在,タスク管理は iPhone アプリである Domo Todo+ というものを使っています.残念ながら iPad 用アプリではないのですが,インターフェースが非常によく,作業に時間が取られないため使い続けています.

Domo Todo は,以下の特徴を持っています.

  1. タイトルの入力,日付の選択(1週間以内はタッチのみでよい),必要であれば時間の設定,タグの付加だけという簡単な入力スタイルです.タイトルが入力できてしまえば,後は数秒で完了になります.
  2. タスクを終了させると,タイトルにチェックマークが付きます.また,繰り返し設定がされている場合には,該当する次の日付に新しい ToDo を作成してくれます.
  3. ToDo はアプリで見られるだけでなく,Google Calendar の特定のカレンダー(私は domo Todo としています)にイベントとして登録されます.
  4. 逆に Google Calendar にイベントを登録すると Domo Todo+ 内の ToDo として表示されます.

この最後の二つの機能のおかげで,iPad の他のアプリや Mac との連携が非常に容易になっています.

iPad に関して

  1. iPhone アプリですが,拡大表示にすることでほぼ全画面で Domo Todo+ を起動できます.
  2. カレンダーで Google カレンダーを同期することで,Domo Todo+ で入力したタスクをカレンダー上に一覧表示することができます.
  3. 日付の入ったメールを表示し,文章中の日付の部分をクリックすると,カレンダーイベントを作成できます.この時に,domo Todo カレンダーを選択することで,自動的に Domo Todo+ 内の ToDo を追加できます.

Mac に関して

  1. iPad のカレンダーと同様,iCalGoogle カレンダーを同期することで,Domo Todo+ で入力したタスクをカレンダー上に一覧表示することができます.この時,domo Todo カレンダーだけは,メインカレンダーからの「委任」機能ではなく,domo Todo カレンダーを直接同期するように設定します.
  2. iPad のメール同様 Mail.app で,日付の入ったメールから,カレンダーイベントを作成できます.イベント作成時に domo Todo カレンダーを選択することで,Domo Todo+ の ToDo となります.この時,カレンダー一覧には,委任機能で同期しているカレンダーが表示されないため,上記のように直接カレンダーを同期する必要があるのです.

Redmine のチケットからの ToDo 作成

職場では Redmine と呼ばれる Ruby on Rails ベースのプロジェクト管理システムを利用しています.このシステムではさまざまなタスクがチケットという形で管理されます.他人への仕事の依頼がある場合には,チケットを発行します.この時,担当者や監視者にメールが送信されます.せっかく作業依頼のメールが届くので,このメールを自動処理して Google カレンダーに登録する仕組みを作成しました.→ 参考にしたサイト

AppleScript の作成
以下のような AppleScript を記述し,Library/Scripts/Applications/AppleScript エディタ/setDomoTodo.scpt として保存する
using terms from application "Mail"
	on perform mail action with messages theMessages for rule theRule
		tell application "Mail"
			set theText to "This AppleScript is intended to be used as an AppleScript rule action, but is also an example of how to write scripts that act on a selection of messages or mailboxes." & return & return & "To view this script, hold down the option key and select it again from the Scripts menu."
			repeat with eachMessage in theMessages
				tell application "Mail"
					activate
					set theSubject to subject of eachMessage
					set theMessageId to message id of eachMessage
					set theReceived to date received of eachMessage
				end tell
				
				tell application "iCal"
					activate
					set an_event to make event at end of events of calendar ("domo Todo")
					tell an_event
						set summary to theSubject
						set start date to theReceived
						set end date to theReceived
						set description to "<message:%3C" & theMessageId & "%3E>"
					end tell
				end tell
			end repeat
		end tell
	end perform mail action with messages
end using terms from
Mail.app のルールの追加
Mail.app のルールを以下のように追加する
  1. 説明は適当に記述します.
  2. 条件は以下のように設定します.
    1. すべての条件に一致した場合を選択します.
    2. 一つ目の条件は「差出人」「redmine送信先メールアドレス」「である」にします.
    3. 二つ目の条件は「件名」「[」「で始まる」にします.
    4. 三つ目の条件は「件名」「(新規)」「を含む」にします.
  3. 「以下の操作を実行」は以下のように設定します.
    1. AppleScript を実行」を選択し,上記の setDomoTodo.scpt を選択します.
    2. 「メッセージを移動」を選択し,Redmine 用のに作成したフォルダを選択します.
    3. 「ルールの評価を停止する」を選択します.

(新規)だけでなく(フィードバック)についても同様にルールを作成します.

これで設定は終了です.Redmine にチケットが新規で投稿されたとき,サブジェクトをタイトルとしたイベントが Google Calender に登録されます.その結果,Domo Todo+ にも Todo として登録されることになります.Todo の完了日付は本来文章内の期日が登録されるべきですが,そこまで AppleScript を書く技術がないので,メールの送信日時に設定しています.どちらにしても,タグを設定するために Domo Todo+ で修正するので今のところ問題にしていません.