プロジェクトチームのタスク管理ツールを Trello から Asana に変えることになり、 タスクの移行が意外と簡単にできた、というお話です。
Trello と Asana
もともと使っていたのは Trello(トレロ)です。 プロジェクト > タスクグループ > タスク を、ボード > リスト > カード として管理します。 使いづらさを感じたのは、カードの階層管理ができない点でした。(カード > チェックリストはありますが)
一方 Asana(アサナ)は、ワークスペース(組織) > チーム > プロジェクト > タスク という管理です。 「セクション」でタスクグループが設定できたり、タスク内でサブタスクの追加できたり、と柔軟性があります。
さて移行作業
Trello は2ヵ月ほど使っており、60以上のカードがありました。 Asana に手動で登録し直すのは面倒、、と思ったところ、Asana API が!。 Asana のプロジェクトに、API で Trello のタスクを登録すれば良いですね。
Asana へのタスク登録は、tasks API を使います。今回は、タスクのタイトル name
と説明 notes
のみ移行対象とします。
[shell]# Request curl -u <api_key>: https://app.asana.com/api/1.0/tasks \ -d "assignee=1235" \ -d "followers[0]=5678" \ -d "name=Hello, world%21" \ -d "notes=How are you today%3F" \ -d "projects=14641" \ -d "workspace=14916" [/shell]
Trello データのエクスポート
まず、Trello のデータをJSONでエクスポートします。(Trello: Menu > More > Print and Export > Export JSON)
JSONから、タスクのタイトル cards.name
と説明 cards.desc
を取出して、ファイル出力します。
ブラウザ(Chrome)のコンソールで、このようなことをしました。
[js] var trello = (エクスポートされたJSON);
// タスクのタイトルと説明を取出す var tasks = function() { var arr = ""; for(i=0;i<trello.cards.length;i++){ arr += "name=" + trello.cards[i].name + ", notes=" + trello.cards[i].desc; arr += "\r\n"; } return arr; }
// ファイルとしてダウンロード var downloadAsFile = function(fileName, content) { var a = document.createElement('a'); a.download = fileName; a.href = 'data:application/octet-stream,'+content; a.click(); };
// 実行! downloadAsFile("tasks.txt", tasks()) [/js]
以下のような内容のファイルがダウンロードされます。
name=Task 1-1, notes=this is the very first task name=Task 1-2, notes= name=Task 2-1, notes=
Asana タスク登録
Asana のAPIキーを取得します。(Asana: My Profile Settings > APPS > API Key) workspaces API、projects API でワークスペースID、プロジェクトIDを取得します。
[shell]
workspace id
curl -u XXXXX: https://app.asana.com/api/1.0/workspaces <pre>{"data":[{"id":12345,"name":"dac.co.jp"},{"id":67890,"name":"Personal Projects"}]}
project id
curl -u XXXXX: https://app.asana.com/api/1.0/workspaces/12345/projects {"data":[{"id":11111,"name":"sample"},{"id":22222,"name":"sample2"}]} [/shell]
あとは、先ほどのファイルの中身を Asana API 用に整形して、curl で実行します。
[shell] curl -u XXXXX: https://app.asana.com/api/1.0/tasks \ -d "name=Task 1-1" \ -d "notes=this is the very first task" \ -d "projects=11111" \ -d "workspace=12345" [/shell]
移行後の Asana プロジェクトは、最初のキャプチャの通りです。
残念だったのは、Trello のコメントが移行できなかった(エクスポートされたデータに入っていなかった)点です。 Trello と Asana のユーザやステータスも、マッピングすれば合わせて移行できそうでしたが、、今回は見送りました。