ChatworkとSlackを連携してメッセージを転送する方法
今回やるのはChatworkのメッセージをslackに転送する方法です。作業にあたって少し専門用語が出てきますが、基本的にコピーペーストで大丈夫です。
事前準備
ChatworkとSlackを連携するには事前の準備が必要です。まずは必要な物を揃えて行きましょう
Chatwork APIを取得する
Chatworkからメッセージを転送するためにはChatwork APIが必要です。
Chatwork APIは、チャットワークでログインした状態で以下のページで取得できます。

するとランダムな文字列で形成されたAPIキーが発行されます。このキーは後で使用するのでどこかにメモっておいてください。
Slack APIを取得する
次に、Chatworkから転送するメッセージをSlackで受け取るためのSlack APIを取得します。
APIキーの発行は以下のページから行なってください。
![APIキーを発行できるページにアクセスしたら[Create token]をクリック](http://cdn2.aprico-media.com/production/imgs/images/000/047/506/original.png?1580717223)
その際、Slackログイン用のパスワードを要求されるのでパスワードを入力してください。パスワードの入力完了するとAPIキーが発行されます。
これで事前準備完了です。
Google App Scriptで転送用コードを用意する
ChatworkからSlackにメッセージを転送するにはGoogle App Scriptを使用します。
Google App Scriptを使用するために空のGoogleドキュメントを一度作成してください。
![空のGoogleドキュメントを作成→[ツール]->[スクリプトエディタ]をクリック](http://cdn2.aprico-media.com/production/imgs/images/000/047/507/original.png?1580717227)

テキストエディタが空になったら、以下のコードを貼り付けます。
var CHATWORK_TOKEN ='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';//chatwork APIトークン var SLACK_TOKEN = 'xoxp-xxxxxxxxxxx-xxxxxxxxxxx-xxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';//Slack APIトークン var MY_ID = 'xxxxxxx'; //自分のチャットワークID var ROOM_ID = ["xxxxxxxx","xxxxxxxx","xxxxxxxx"];//取得したいチャットワークのルームID function getChatWork(){ var params = { headers : {"X-ChatWorkToken" : CHATWORK_TOKEN}, method : "get" }; for (var i = 0; i < ROOM_ID.length; i ++) { var url = "https://api.chatwork.com/v2/rooms/" + ROOM_ID[i] + "/messages?force=0"; var strRespons = UrlFetchApp.fetch(url, params); if (strRespons != "") { var json = JSON.parse(strRespons.getContentText()); if(json == "") return; for each(var obj in json){ if(obj.body.indexOf(MY_ID) != -1){ var message = ''; for(var i in json){ message = message + json[i].account.name + "\n```" + json[i].body + "```\n"; postMessage(message); } } } } } } function postMessage(message) { var url = 'https://slack.com/api/chat.postMessage'; var token = SLACK_TOKEN; var channel = "#general"; var username = "chatwork"; var parse = 'full'; var icon_emoji = ':robot_face:'; var method = 'post'; var payload = { 'token' : token, 'channel' : channel, 'text' : message, 'username' : username, 'parse' : parse, 'icon_emoji' : icon_emoji }; var params = { 'method' : method, 'payload' : payload }; var response = UrlFetchApp.fetch(url, params); }
上記コードのうち以下の箇所をそれぞれ編集してください。
- 1行目:事前に取得したChatwork APIキー
- 2行目:事前に取得したSlack APIキー
- 3行目:自分のChatwork ID
- 4行目:転送したいメッセージがあるチャットワークのルームID
- 35行目:転送先Slackチャンネル名

定期実行させるトリガーを設定する
上記コードでChatworkからSlackにメッセージを転送する事ができますが、このままでは自動実行されず、メッセージを同期することができません。
上記メッセージ転送用プログラム自動実行するには、トリガーを設定します。


![[トリガーを追加]をクリック](http://cdn2.aprico-media.com/production/imgs/images/000/047/512/original.png?1580717237)
![「イベントのソースを選択」を[時間主導型]に切り替える](http://cdn2.aprico-media.com/production/imgs/images/000/047/513/original.png?1580717239)

最短で1分おきに実行できるので、好きなように変更してください。
![プログラムの実行間隔を変更したら[保存]を押す](http://cdn2.aprico-media.com/production/imgs/images/000/047/515/original.png?1580717243)
これで定期的にChatworkからSlackにメッセージが転送されるようになります。