ChatworkとSlackを連携してメッセージを転送する方法!

ChatworkとSlackを連携してメッセージを転送する方法!

仕事の都合でChatworkとSlack両方使用しているという方もいるかと思います。そういうときはChatworkとSlackを連携してメッセージを転送できる仕組みを整えると非常に効率的です。今回はChatworkと Slackを連携させる方法を解説します。


目次[非表示]

  1. ChatworkとSlackを連携してメッセージを転送する方法

ChatworkとSlackを連携してメッセージを転送する方法

今回やるのはChatworkのメッセージをslackに転送する方法です。作業にあたって少し専門用語が出てきますが、基本的にコピーペーストで大丈夫です。

事前準備

ChatworkとSlackを連携するには事前の準備が必要です。まずは必要な物を揃えて行きましょう

Chatwork APIを取得する

Chatworkからメッセージを転送するためにはChatwork APIが必要です。

Chatwork APIは、チャットワークでログインした状態で以下のページで取得できます。

Chatwork API
チャットワークログイン用パスワードを入力し、エンターキーを押す
チャットワークログイン用パスワードを入力し、エンターキーを押します。

するとランダムな文字列で形成されたAPIキーが発行されます。このキーは後で使用するのでどこかにメモっておいてください。

Slack APIを取得する

次に、Chatworkから転送するメッセージをSlackで受け取るためのSlack APIを取得します。

APIキーの発行は以下のページから行なってください。

Slack API
APIキーを発行できるページにアクセスしたら[Create token]をクリック
APIキーを発行できるページにアクセスしたら少し下にスクロールし[Create token]をクリックします。

その際、Slackログイン用のパスワードを要求されるのでパスワードを入力してください。パスワードの入力完了するとAPIキーが発行されます。

これで事前準備完了です。

Google App Scriptで転送用コードを用意する

ChatworkからSlackにメッセージを転送するにはGoogle App Scriptを使用します。

Google App Scriptを使用するために空のGoogleドキュメントを一度作成してください。

空のGoogleドキュメントを作成→[ツール]->[スクリプトエディタ]をクリック
作成したら、[ツール]->[スクリプトエディタ]へと進みます。
スクリプトエディタのテキストを全て消す
スクリプトエディタを開いたら、一度テキストエディタに入力されているテキストを全て消しておいてください。

テキストエディタが空になったら、以下のコードを貼り付けます。

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チャンネル名
この5箇所以外は編集する必要はありません。むしろ下手に編集すると動かない可能性があるので注意しましょう。

チャットワークのルーム IDの表示画面
ちなみにですが、チャットワークのルーム IDというのはルームを開いたときに表示されているURLの「rid」から始まるIDです。

定期実行させるトリガーを設定する

上記コードでChatworkからSlackにメッセージを転送する事ができますが、このままでは自動実行されず、メッセージを同期することができません。

上記メッセージ転送用プログラム自動実行するには、トリガーを設定します。

Google App Scriptのトリガーアイコンをクリック
トリガーの設定は、Google App Scriptのトリガーアイコンをクリックします。
プロジェクトに名前をつけて保存
プロジェクトを保存していない場合はプロジェクトの保存を要求されるので、好きな名前を付けて保存しておきましょう。
[トリガーを追加]をクリック
右下の[トリガーを追加]をクリックします。
「イベントのソースを選択」を[時間主導型]に切り替える
「イベントのソースを選択」を[時間主導型]に切り替えます。
メッセージの転送プログラムを実行する間隔を指定する
メッセージの転送プログラムを実行する間隔を指定します。

最短で1分おきに実行できるので、好きなように変更してください。

プログラムの実行間隔を変更したら[保存]を押す
プログラムの実行間隔を変更し終わったら[保存]を押します。

これで定期的にChatworkからSlackにメッセージが転送されるようになります。


キーワード一覧