ChatworkとSlackの連携をGASで実現するステップバイステップガイド

ChatworkとSlackがどっちも使われている職場だから、うまく連携したいんだけど…どこから手をつけたらいいかさっぱりで…
猫男
猫男
catman
catman
ふむ、ChatworkとSlackの連携をGASで実現する方法をcatmanが教えてやろう

ChatworkとSlackの基本的な連携方法

ChatworkとSlackの両方を活用するためには、GASでそれぞれのAPIを利用することが重要です。これにより、メッセージの自動化や通知を効率化できます。

必要な準備

GASを使ってChatworkとSlackの連携を始める前に、以下の準備をする必要があります。

– Chatwork APIトークンを取得
– Slack APIトークンを取得
– Google Apps Scriptが使えるGoogleアカウント

APIトークンは何に使うんですか?
猫男
猫男
catman
catman
APIトークンは、各プラットフォームと通信するための鍵のようなものさ。これがないと何も始まらないのだよ

 

GASプロジェクト作成とAPI設定

GASプロジェクトを作成し、ChatworkとSlackのAPIを呼び出す準備をします。

GASプロジェクトの作成

Googleドライブにアクセスし、「新規」メニューから「Google Apps Script」を選択してプロジェクトを作成します。

ChatworkとSlackのAPIを設定

GASスクリプト内でAPIを利用するには、まずAPIトークンを記述する必要があります。

 const chatworkApiUrl = 'https://api.chatwork.com/v2/';
const slackApiUrl = 'https://slack.com/api/';
const chatworkToken = 'あなたのChatwork APIトークン';
const slackToken = 'あなたのSlack APIトークン'; 

ここではAPIアクセスに必要なURLとトークンを設定しています。

 

Chatwork APIを利用したメッセージ送信

Chatworkでメッセージを送る方法を見ていきます。

メッセージ送信のスクリプト

以下のコードを使って、Chatworkの指定されたルームにメッセージを送信します。

 function sendChatworkMessage(roomId, message) {
  const options = {
    method: 'post',
    headers: { 'X-ChatWorkToken': chatworkToken },
    payload: { body: message }
  };
  UrlFetchApp.fetch(chatworkApiUrl + 'rooms/' + roomId + '/messages', options);
} 

roomIdはメッセージを送信する部屋のIDで、messageは送信したいテキストです。

スクリプトを使えば簡単にメッセージを送れるんですね!
猫男
猫男

 

Slack APIを利用したメッセージ送信

Slackでも同様にメッセージを送信します。

メッセージ送信のスクリプト

Slackでチャンネルにメッセージを送信するためのコードです。

 function sendSlackMessage(channel, text) {
  const options = {
    method: 'post',
    contentType: 'application/json',
    headers: { 'Authorization': 'Bearer ' + slackToken },
    payload: JSON.stringify({
      channel: channel,
      text: text
    })
  };
  UrlFetchApp.fetch(slackApiUrl + 'chat.postMessage', options);
} 

channelはメッセージを送信するチャンネルのIDか名前で、textは送信する内容です。

catman
catman
APIを利用すれば、両方のプラットフォームでメッセージを自在に操れるようになるのさ

 

応用編:ChatworkとSlackのメッセージを連携

応用として、ChatworkのメッセージをSlackにも通知するスクリプトを作ってみます。

 function notifySlackFromChatwork(roomId, channelId) {
  const roomUrl = chatworkApiUrl + 'rooms/' + roomId + '/messages';
  const response = UrlFetchApp.fetch(roomUrl, {
    method: 'get',
    headers: {
      'X-ChatWorkToken': chatworkToken
    }
  });
  const messages = JSON.parse(response.getContentText());
  
  if (messages.length > 0) {
    const latestMessage = messages[messages.length - 1].body;
    sendSlackMessage(channelId, 'From Chatwork: ' + latestMessage);
  }
} 

このスクリプトはChatworkの指定ルームから最新のメッセージを取得し、それをSlackのチャンネルに転送します。

 

練習問題

以下のGASスクリプトを使って、指定したChatworkルームのメンバーを一覧表示する機能を実装してください。

ヒント: Chatwork APIのエンドポイントを参考にすること。

  

解答・解説

 function listChatworkMembers(roomId) {
  const url = chatworkApiUrl + 'rooms/' + roomId + '/members';
  const response = UrlFetchApp.fetch(url, {
    method: 'get',
    headers: {
      'X-ChatWorkToken': chatworkToken
    }
  });
  
  const members = JSON.parse(response.getContentText());
  members.forEach(member => {
    Logger.log('Member: ' + member.name);
  });
} 

このコードは、Chatworkのルームのメンバー情報を取得し、各メンバーの名前をログに表示します。

UrlFetchApp.fetchメソッドは指定したURLのデータを取得します。ここでは、GETリクエストを用いています。

EARTHPG 自動化研究所

「その作業、仕組みにできます。」

Google Apps Script、Python、スプレッドシート自動化、WordPress開発、 API連携、AI活用まで対応。 小さな自動化から業務全体の設計まで、研究所が支援します。