ChatworkとSlackの連携をGASで実現するステップバイステップガイド
ChatworkとSlackの基本的な連携方法
ChatworkとSlackの両方を活用するためには、GASでそれぞれのAPIを利用することが重要です。これにより、メッセージの自動化や通知を効率化できます。
必要な準備
GASを使ってChatworkとSlackの連携を始める前に、以下の準備をする必要があります。
– Chatwork APIトークンを取得
– Slack APIトークンを取得
– Google Apps Scriptが使えるGoogleアカウント
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は送信する内容です。
応用編: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リクエストを用いています。