Chatworkの不満
コミュニケーションがチャットワークに依存しています(無料プランだけど...)
そしてチャットワークから他のチャットに移行できない最も重要な(個人的に)機能
タスク管理機能
見づらいし微妙すぎる(超失礼)タスク管理機能ですが
あのポチポチでタスク登録できるのが便利なんですよね
しかしチャットから発生していないタスクはAsanaで管理している
チャットで発生したタスクはチャットワークでタスク化
そしてAsanaに転記
...面倒くさい
私のググり力では良い連携機能を見つけられなかったので
いま手持ちの環境の中で一番サクッと手軽に作れそうなGASで連携してみることにしました。
全員分連携しようかと思ったけど面倒くさいので自分のチーム(2人だけど)だけ連携
##前準備
ChatworkのAPIトークンと
監視したいChatworkのルームIDとアカウントID
AsanaのAPIトークンと
タスク追加したいところの
workspaceIDとprojectIDは事前に取得&調べておきます。
##ソース
chatworkクライアントライブラリを使わせていただいています
https://github.com/cw-shibuya/chatwork-client-gas
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日までに焼き肉が食べたいタスクをチャットワークに登録
勝手に完了します。
雑談ボットが無駄に反応していますが、これ以上の会話は成り立たないので無視します
チャットワークは他の類似チャットサービスに比べて誰でもとっつきやすくライトに使える素晴らしいサービスだと超個人的に思っています。
でもタスク管理が不満でした。
でもちょっと忘れないようにくらいの用途だと便利、だから皆使う。でもタスクが増えてくると可視化しづらいので使いづらい。
これで不満がちょっと解消されたので、まだまだチャットワークに依存し続けます。