GASでSlack Bot作成:初心者でも簡単!自動応答ボットの作り方
/ 初心者向け
GASでSlack Bot作成:初心者でも簡単!自動応答ボットの作り方
Slackでのコミュニケーションをより効率化・自動化したいと思ったことはありませんか? そんな時に役立つのが、カスタムSlack Botです。そして、Google Apps Script (GAS) を使えば、コーディング経験が浅い方でも手軽にオリジナルのSlack Botを作成できます。
この記事では、GASを使って基本的なSlack Botを作成する手順を、サンプルコードとともに分かりやすく解説します。まずは、簡単な「こんにちは」と応答するボットから始めてみましょう。
1. Slackアプリの準備
まず、Slackのワークスペースにアプリを作成し、ボットトークンを取得する必要があります。
1. Slack APIサイトにアクセス: https://api.slack.com/apps にアクセスし、「Create an App」ボタンをクリックします。
2. 「From scratch」を選択: アプリの作成方法で「From scratch」を選びます。
3. アプリ名とワークスペースを選択: アプリ名(例: GAS Bot Demo)と、ボットを作成するSlackワークスペースを選択して「Create App」をクリックします。
4. 「OAuth & Permissions」へ移動: 作成したアプリの設定画面で、左側のメニューから「OAuth & Permissions」を選択します。
5. 「Scopes」の設定: 「Scopes」セクションにある「Bot Token Scopes」で、ボットに必要な権限を追加します。今回は、メッセージの読み取りと投稿を許可するために chat:write と channels:history を追加します。必要に応じて他のスコープも追加してください。
6. トークンの取得: 画面上部に戻り、「Install App」ボタンをクリックし、ワークスペースにアプリをインストールします。インストール後、「Bot User OAuth Token」が表示されるので、これをコピーしておきましょう。これがGASからSlackにアクセスするための「トークン」になります。
2. Google Apps Script (GAS) の準備
次に、GASエディタを開き、Slack Botのロジックを記述します。
1. GASプロジェクトの作成: Googleドライブを開き、「新規」>「その他」>「Google Apps Script」を選択して、新しいスクリプトプロジェクトを作成します。
2. プロジェクト名の変更: デフォルトの「無題のプロジェクト」を分かりやすい名前に変更します(例: Slack Bot Script)。
3. コードの記述: エディタに表示されているデフォルトのコードを削除し、以下のコードを貼り付けます。
const SLACK_BOT_TOKEN = 'YOUR_SLACK_BOT_TOKEN'; // ここに取得したBot Tokenを貼り付け
const CHANNEL_ID = 'YOUR_CHANNEL_ID'; // ボットを応答させたいチャンネルのID
function doPost(e) {
const message = JSON.parse(e.postData.contents);
const text = message.event.text;
if (text) {
let responseText = '';
if (text.includes('こんにちは')) {
responseText = 'こんにちは!何かお手伝いできることはありますか?';
} else {
responseText = '「こんにちは」と話しかけてください。';
}
postMessageToSlack(responseText);
}
return ContentService.createTextOutput(JSON.stringify({ 'response_message': 'Received' })).setMimeType(ContentService.MimeType.JSON);
}
function postMessageToSlack(message) {
const url = 'https://slack.com/api/chat.postMessage';
const payload = {
'channel': CHANNEL_ID,
'text': message
};
const options = {
'method': 'post',
'contentType': 'application/json',
'headers': {
'Authorization': 'Bearer ' + SLACK_BOT_TOKEN
},
'payload': JSON.stringify(payload)
};
UrlFetchApp.fetch(url, options);
}
// ボットがイベントを受け取るための設定(初回実行時など)
function getBotInfo() {
const url = 'https://slack.com/api/bots.info';
const options = {
'headers': {
'Authorization': 'Bearer ' + SLACK_BOT_TOKEN
}
};
const response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContentText());
}
コードの説明
SLACK_BOT_TOKEN: Slack APIから取得したボットトークンを貼り付けます。CHANNEL_ID: ボットを応答させたいSlackチャンネルのIDを指定します。チャンネルIDは、SlackのURL(例:https://yourworkspace.slack.com/archives/CXXXXXXXXXX)のCから始まる部分です。doPost(e): SlackからのHTTP POSTリクエストを受け取る関数です。Slackイベント(メッセージ受信など)がここに送られてきます。JSON.parse(e.postData.contents): 受信したJSONデータをパースします。message.event.text: 受信したメッセージのテキストを取得します。if (text.includes('こんにちは')): メッセージに「こんにちは」が含まれているかチェックします。postMessageToSlack(responseText): Slackにメッセージを投稿する関数を呼び出します。postMessageToSlack(message): 指定されたチャンネルにメッセージを投稿する関数です。Slack APIのchat.postMessageエンドポイントを利用します。'Authorization': 'Bearer ' + SLACK_BOT_TOKEN': APIリクエストに必要な認証ヘッダーを設定します。getBotInfo(): ボットの情報を取得するための関数です。初回実行時などに、ボットが正しく設定されているか確認するために利用できます。
3. Slack Botの設定(イベントサブスクリプション)
GASで作成したボットがSlackからのメッセージを「受信」できるように設定します。
1. 「Event Subscriptions」へ移動: Slackアプリの設定画面に戻り、左側のメニューから「Event Subscriptions」を選択します。
2. 「Enable Events」をオン: 「Enable Events」をオンにします。
3. 「Request URL」の設定: 「Request URL」にGASスクリプトのデプロイURLを入力します。GASスクリプトの「デプロイ」>「新しいデプロイ」から、タイプを「Webhook」にしてデプロイした際のURLをコピーして貼り付けます。
- GASスクリプトのデプロイ方法:
1. GASエディタで「デプロイ」>「新しいデプロイ」をクリックします。
2. 歯車アイコンをクリックし、「タイプ」を「Webhook」にします。
3. 「実行権限」は「自分」で構いません。
4. 「デプロイ」ボタンをクリックします。
5. 表示されるWebhook URLをコピーします。
4. 「Subscribe to bot events」の設定: 「Subscribe to bot events」セクションで、「Add Bot User Event」をクリックし、「message.channels」を選択して追加します。これにより、ボットがパブリックチャンネルのメッセージを購読できるようになります。
5. 変更の保存: 設定を保存します。
4. ボットのテスト
これでSlack Botの準備は完了です。実際にSlackチャンネルでテストしてみましょう。
1. Slackチャンネルでボットに話しかける: ボットを招待したチャンネルで、ボットに「こんにちは」と話しかけてみてください。
2. ボットからの応答を確認: ボットが「こんにちは!何かお手伝いできることはありますか?」と応答すれば成功です!
「こんにちは」以外のメッセージを送ると、「「こんにちは」と話しかけてください。」と応答するはずです。
まとめ
今回は、GASを使って簡単な応答ができるSlack Botを作成する方法をご紹介しました。この基本を応用すれば、以下のような様々な機能を持つボットを開発できます。
- 天気予報ボット: 天気予報APIと連携して、地域ごとの天気を通知する。
- TODO管理ボット: スプレッドシートと連携して、TODOリストを管理・共有する。
- リマインダーボット: 指定した時間にメッセージを送信する。
GASはGoogle Workspaceの様々なサービス(Gmail, スプレッドシート, ドキュメントなど)とも連携できるため、Slack Botの可能性は無限大です。ぜひ、あなただけの便利なSlack Botを作成してみてください!
まずは、この基本ボットをベースに、色々な機能を実装していくのがおすすめです。GASとSlack Bot開発の世界をぜひ楽しんでください!
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。