【小ネタ】タスク管理ツール移行: 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エンジニア採用情報

  関連記事

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

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

sd
x-callback-urlを使ってみた

x-callback-urlとは? iOSのアプリ間連携の仕様の一つみたいです。簡単に言うと、ディープリンクを行うためにカスタムURLスキームを利用するが、アプリ毎にバラバラな規則でURLスキームを設定するとアプリ間連携をスムーズに行うことができないため、どのような規則でURLスキームを設定するかを …

l_077
fastavroとjqでAVRO形式のファイルからデータを取得しよう

AVRO形式のファイルを取り扱いたい AVROとはApacheプロジェクトのひとつとして開発されているデータ交換形式です。 コンパクトなバイナリで高速なシリアライズ・デシリアライズが行えるため、サーバーログなどに利用されています。 弊社内での一部システムのログデータにも利用されているのですが、専用の …

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

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

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

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

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

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

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

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

ie10
modern.IEを使ってMac上でWindows10を動かす

Microsoftが提供している modern.IE というプロジェクトがある。そこで提供されている仮想環境を使って、MacにWindows10をインストールしてみる。ちなみに、このプロジェクトの本来の目的はInternet Explorerの表示確認やデバッグの支援。 VirtualBoxの準備 …

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

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

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

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