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にメッセージが転送されるようになります。