8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ChatworkのタスクをAsanaで管理したかった

Last updated at Posted at 2020-04-28

Chatworkの不満

コミュニケーションがチャットワークに依存しています(無料プランだけど...)
そしてチャットワークから他のチャットに移行できない最も重要な(個人的に)機能
タスク管理機能

見づらいし微妙すぎる(超失礼)タスク管理機能ですが
あのポチポチでタスク登録できるのが便利なんですよね

しかしチャットから発生していないタスクはAsanaで管理している
チャットで発生したタスクはチャットワークでタスク化
そしてAsanaに転記
...面倒くさい

私のググり力では良い連携機能を見つけられなかったので
いま手持ちの環境の中で一番サクッと手軽に作れそうなGASで連携してみることにしました。

全員分連携しようかと思ったけど面倒くさいので自分のチーム(2人だけど)だけ連携

##やりたいこと超概要
無題のプレゼンテーション.jpg

##前準備
ChatworkのAPIトークンと
監視したいChatworkのルームIDとアカウントID
AsanaのAPIトークンと
タスク追加したいところの
workspaceIDとprojectIDは事前に取得&調べておきます。
##ソース
chatworkクライアントライブラリを使わせていただいています
https://github.com/cw-shibuya/chatwork-client-gas

コード.gs
function myFunction() {
	var accounts = [
		{"mail": "ASNAMAIL1", "chatwork_token": "CHATWORKTOKEN2", "chatwork_aid": "CHATWORKAID1", "asana_token": "ASANATOKEN1"},
		{"mail": "ASANAMAIL2", "chatwork_token": "CHATWORKTOKEN2", "chatwork_aid": "CHATWORKAID2", "asana_token": "ASANATOKEN2"}
	];
	var chatwork_target_room_id = 'TARGETROOMID';

	var asana_api = "https://app.asana.com/api/1.0/tasks";
	var asana_workspace = "WORKSPACEID";
	var asana_project = "PROJECTID";

	for(var i=0; i<accounts.length; i++){
		var account = accounts[i];
      
		var client = ChatWorkClient.factory({token: account["chatwork_token"]});
		var tasks = client.getRoomTasks(chatwork_target_room_id , {account_id: account["chatwork_aid"], status: 'open'});

		if(tasks!=false){
			for(var j=0; j<tasks.length; j++){
				var task = tasks[j];
				var chatbody = task.body.replace(/\[\/?.+\]/, "");
              
				//Asanaにタスク登録
				var headers = {
					"Authorization": "Bearer " + account["asana_token"]
				};
				var email = account["mail"];
				var limit_time = new Date(task.limit_time * 1000);
				var due_on = Utilities.formatDate(limit_time,"JST","yyyy-MM-dd");
				var data = {
					"data": {
						"workspace": asana_workspace,
						"projects": [asana_project],
						"name": chatbody.slice(0, 100),
						"notes": "https://www.chatwork.com/#!rid"+chatwork_target_room_id+"-"+task.message_id+"\n---\n"+chatbody,
						"assignee": "me"
					}
				}
				if(task.limit_time != 0){
					data["data"]["due_on"] = due_on;
				}
				var json = JSON.stringify(data);
				var options = {
					"method": "post",
					"contentType": "application/json",
					"headers": headers,
					"payload": json,
					"muteHttpExceptions": true
				}
				var response = UrlFetchApp.fetch(asana_api, options);
				var jobj = JSON.parse(response);

				//chatworkTaskを完了にする
				var targetUrl = 'https://api.chatwork.com/v2/rooms/'+chatwork_target_room_id+'/tasks/'+task.task_id+'/status';
				var res = UrlFetchApp.fetch(targetUrl,
					{
						headers: {'X-ChatWorkToken': account["chatwork_token"]},
						method: 'put',
						payload: {'body': "done" },
						muteHttpExceptions : true,
					}
				);
			}
		}
	}
}

こいつを1分毎に実行するように設定します。

##やってみよう

4月30日までに焼き肉が食べたいタスクをチャットワークに登録
image.png


勝手に完了します。
雑談ボットが無駄に反応していますが、これ以上の会話は成り立たないので無視します
image.png


Asanaをチェック
image.png


詳細を見るとリンクも設定されていてなんかいい感じの雰囲気
image.png


チャットワークは他の類似チャットサービスに比べて誰でもとっつきやすくライトに使える素晴らしいサービスだと超個人的に思っています。
でもタスク管理が不満でした。
でもちょっと忘れないようにくらいの用途だと便利、だから皆使う。でもタスクが増えてくると可視化しづらいので使いづらい。
これで不満がちょっと解消されたので、まだまだチャットワークに依存し続けます。

8
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?