Help us understand the problem. What is going on with this article?

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

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


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

tcf775
新潟国で一人情シス的に日々雑用をこなしています。疲れました。とか言って
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした