【小ネタ】タスク管理ツール移行: Trello から Asana


 

プロジェクトチームのタスク管理ツールを Trello から Asana に変えることになり、
タスクの移行が意外と簡単にできた、というお話です。

Trello と Asana

もともと使っていたのは Trello(トレロ)です。
プロジェクト > タスクグループ > タスク を、ボード > リスト > カード として管理します。
使いづらさを感じたのは、カードの階層管理ができない点でした。(カード > チェックリストはありますが)trello

一方 Asana(アサナ)は、ワークスペース(組織) > チーム > プロジェクト > タスク という管理です。
「セクション」でタスクグループが設定できたり、タスク内でサブタスクの追加できたり、と柔軟性があります。asana

さて移行作業

Trello は2ヵ月ほど使っており、60以上のカードがありました。
Asana に手動で登録し直すのは面倒、、と思ったところ、Asana API が!。
Asana のプロジェクトに、API で Trello のタスクを登録すれば良いですね。

Asana へのタスク登録は、tasks API を使います。今回は、タスクのタイトル name と説明 notes のみ移行対象とします。

# 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"

 

Trello データのエクスポート

まず、Trello のデータをJSONでエクスポートします。(Trello: Menu > More > Print and Export > Export JSON)
JSONから、タスクのタイトル cards.name と説明 cards.desc を取出して、ファイル出力します。
ブラウザ(Chrome)のコンソールで、このようなことをしました。

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())

以下のような内容のファイルがダウンロードされます。

 

Asana タスク登録

Asana のAPIキーを取得します。(Asana: My Profile Settings > APPS > API Key)
workspaces APIprojects API でワークスペースID、プロジェクトIDを取得します。

# workspace id
curl -u XXXXX: https://app.asana.com/api/1.0/workspaces</pre>
<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"}]}
 

あとは、先ほどのファイルの中身を Asana API 用に整形して、curl で実行します。

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"

移行後の Asana プロジェクトは、最初のキャプチャの通りです。

残念だったのは、Trello のコメントが移行できなかった(エクスポートされたデータに入っていなかった)点です。
Trello と Asana のユーザやステータスも、マッピングすれば合わせて移行できそうでしたが、、今回は見送りました。


DACエンジニア採用情報

  関連記事

監視
Charlesを使ってスマホアプリ(iOS)のUAを調べてみた

はじめに ここ最近のスマホアプリには、Webブラウザの機能を実装したものが少なくありません。 (“スマホアプリ内で立ち上がるブラウザ「アプリ内ブラウザ」”の機能は「WebView」というコンポーネントを用いて実装されています。) 昨今のWebサイト、サービス運営に於いて、「通 …

Libra
【HTML5】4ツール出力ファイルサイズ比較

こんにちは、近江です。 前回もHTML5のSwiffyについて書かせて頂きましたが、まだまだHTML5について調査しています。 今回はSwiffyを含めた4つのHTML5系ツールで、同じ素材で同じアニメーションを作成した時のファイルサイズを比較したいと思います。 何故ファイルサイズの比較をするかと言 …

全ファイルを検索
意外と知らないかも? Chrome DevTools の機能10選

みんな使っている Chrome DevTools。 Web開発やトラブルシューティングには必須ですが、便利な機能を知らないで使っている人がいたり、Web で使い方を調べても古い情報だったりすることがあるので、部内で Chrome DevTools についての勉強会を開催しました。 ここでは、その中か …

13629408
kubernetes の全ノード上で同じコンテナを動かす

今回は、kubernetes上で同一コンテナを全ノードで動かす方法を紹介したいと思います。kubernetes自体の起動方法はここでは割愛します。 はじめに 以前、CoreOSのFleet上でmackerel-agentを動かすということを行いました。今回は、kubernetes上で同じようにクラス …

gnu
いまさらですが… GNU screen チートシート

最近はローカル環境で開発するようになってきたので、screen コマンドを使う機会も少なくなって来たような気がします。で、使ってないと忘れてしまうので、チートシートを作ってみました。 参照サイト GNU screen [quick_reference] 起動 コマンド 動作 screen -S &l …

index
Android 非同期処理についてまとめてみた

Androidには、UIに影響を与えないよういくつか非同期処理が用意されています。 今回は非同期処理の代表的な ・Service ・IntentService ・HandlerThread について違いを踏まえながらまとめます! 非同期処理について(http://codezine.jp/articl …

スクリーンショット 2015-05-29 6.49.13
Vagrantの機能を使って開発環境の効率をあげてみた。

プラットフォーム・ワンのシステムの運用・保守担当のエンジニアです。 保守の仕事に関わると、 ユーザからのお問い合わせだったり、監視アラートによる検知から システムを調査することがあります。 ログとソースコードを見て、不具合を特定し改修する。 すぐできればカッコいいですが、 「本番環境に反映して別のエ …

rails
初心者がRailsで開発 – deviseでユーザー認証設定 -

こんにちは、2年目のYukaです。 開発部所属でありながら実は、、 実際に自分で手を動かして開発する機会がなかなかありませんでした。。 しかしついに、、、 開発初心者がRailsでWebアプリの開発に挑戦します!! 今回のゴールは社内でも使用しているGoogleアカウントで簡単にログインができるよう …

image2
自社サービスのDocker化(前編)

こんにちは。 インフラ開発部の上田です。 普段は自社開発システムのインフラ担当として、日々頑張って仕事をしています。 今回は、近年話題になっているDockerについて、取り上げてみようと思います! なぜDockerなのか・・・? そもそもDockerとは何か・・・?   当社では様々なサー …

dockerlogo
自社サービスのDocker化(後編)

こんにちは。 インフラ開発部の上田です。 前回、前編としてDockerについて書き、早半年も経ちました。 前編はこちらです 今回は後編として、以下について書いてみたいと思います。 ■複数プロセス起動 前編で書いた通り、通常のOS起動時とは異なり、コンテナ上で個別にプロセスを起動する必要があります。 …