GASでSlack Botを開発!基礎から応用まで徹底解説
/ 初心者向け
GASでSlack Botを開発!基礎から応用まで徹底解説
皆さん、こんにちは!GAS専門ブロガーの[あなたの名前]です。
今回は、Google Apps Script (GAS) を使って、手軽にオリジナルのSlack Botを作成する方法について、初心者の方でも理解できるように、基礎から応用まで詳しく解説していきます。
なぜGASでSlack Botなのか?
Slack Botは、チームのコミュニケーションを円滑にし、定型業務の自動化に役立つ強力なツールです。しかし、専門的なプログラミング知識がないと、開発はハードルが高いと感じるかもしれません。そこで登場するのがGoogle Apps Script (GAS) です。
GASは、Google Workspace (旧 G Suite) の一部として提供されるJavaScriptベースのスクリプト言語です。特別な環境構築は不要で、ブラウザ上でコードを書いてすぐに実行できるため、プログラミング初心者でも気軽に始められます。Slackとの連携も容易で、GASを使って業務効率化を図るSlack Botを開発することは、非常に現実的な選択肢なのです。
Slack Botの基本構成要素
Slack Botを開発する上で、最低限理解しておきたい要素がいくつかあります。
- Slack API: Slackの機能にプログラムからアクセスするためのインターフェースです。
- Incoming Webhook: Slackチャンネルにメッセージを送信するためのシンプルな機能です。
- Slash Commands: Slack上で
/コマンドの形式で実行できるカスタムコマンドです。 - Bots: SlackのAPIを使って、双方向のやり取りが可能なボットです。
今回は、最も手軽に始められる Incoming Webhook を使ったメッセージ送信から、少し踏み込んで Slash Commands の作成までをGASで実装する方法をご紹介します。
1. Incoming Webhookを使ったメッセージ送信
まずは、GASからSlackチャンネルにメッセージを送信する方法を学びましょう。これは、GASのスクリプトがトリガーされた際に、Slackに通知を送る、といった用途に便利です。
1.1. SlackでIncoming Webhook URLを取得する
1. Slackのワークスペースにログインし、https://api.slack.com/apps にアクセスします。
2. 「Create an App」ボタンをクリックし、「From scratch」を選択します。
3. アプリ名と、連携するワークスペースを選択して作成します。
4. 作成したアプリのページで、左側のメニューから「Incoming Webhooks」を選択します。
5. 「Activate Incoming Webhooks」をオンにします。
6. 「Add New Webhook to Workspace」ボタンをクリックし、メッセージを送信したいチャンネルを選択して「Allow」をクリックします。
7. 表示されたWebhook URLをコピーしておきましょう。このURLが、GASからSlackにメッセージを送るための「宛先」となります。
1.2. GASでメッセージを送信するコード
次に、GASエディタを開き、以下のコードを記述します。
function sendSlackMessage() {
const webhookUrl = 'ここにSlackで取得したWebhook URLを貼り付け';
const message = {
text: 'GASからこんにちは!これはテストメッセージです。'
};
const options = {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(message)
};
UrlFetchApp.fetch(webhookUrl, options);
}
コードの説明:
webhookUrl: 先ほどSlackで取得したWebhook URLをここに貼り付けます。message: 送信するメッセージの内容をJSON形式で定義します。textプロパティにメッセージ本文を指定します。options: HTTP POSTリクエストの詳細を設定します。methodは 'post'、contentTypeは 'application/json'、payloadはmessageオブジェクトをJSON.stringify()で文字列化したものになります。UrlFetchApp.fetch(): GASの機能を使って、指定したURLにHTTPリクエストを送信します。
このスクリプトを保存し、実行すると、指定したSlackチャンネルにメッセージが送信されます。
2. Slash CommandsでインタラクティブなBotを作成する
Incoming Webhookは一方的なメッセージ送信に便利ですが、ユーザーからの入力を受け付けて応答するBotを作成するには、Slash Commandsが適しています。
2.1. SlackでSlash Commandを設定する
1. 先ほど作成したSlackアプリのページに戻ります。
2. 左側のメニューから「Slash Commands」を選択します。
3. 「Create New Command」ボタンをクリックします。
4. 以下の項目を入力します。
- Command: ユーザーがSlackで入力するコマンド名(例:
/hello) - Request URL: ここに、GASで作成するWebhook URLを入力します。後ほど説明します。
- Short Description: コマンドの説明
- Usage Hint: コマンドの使い方(任意)
5. 「Save」ボタンをクリックします。
2.2. GASでSlash Commandのリクエストを受け取る
Slash Commandsが実行されると、Slackは指定した「Request URL」にPOSTリクエストを送信します。GASでは、このリクエストを受け取るための「Webhook URL」を作成する必要があります。
1. GASエディタで新しいスクリプトを作成します。以下のコードを記述します。
function doPost(e) {
const command = e.parameter.command;
const text = e.parameter.text;
const channelId = e.parameter.channel_id;
let responseMessage = '';
if (command === '/hello') {
if (text === 'world') {
responseMessage = 'Hello, world!GASからの応答です。';
} else {
responseMessage = '「/hello world」と入力してください。';
}
} else {
responseMessage = '未知のコマンドです。';
}
const payload = {
channel: channelId,
text: responseMessage
};
return ContentService.createTextOutput(JSON.stringify(payload)).setMimeType(ContentService.MimeType.JSON);
}
コードの説明:
doPost(e): GASがPOSTリクエストを受け取った際に自動的に実行される関数です。eオブジェクトには、リクエストで送信されたパラメータが含まれます。e.parameter.command: 実行されたコマンド名(例:/hello)e.parameter.text: コマンドに続くテキスト(例:world)e.parameter.channel_id: コマンドが実行されたチャンネルのID- Slackへの応答は、JSON形式で返却する必要があります。
ContentService.createTextOutput()を使ってJSON文字列を作成し、setMimeType(ContentService.MimeType.JSON)でMIMEタイプを指定します。
2.3. GASのWebhook URLを取得してSlackに設定する
1. GASエディタで、「デプロイ」>「新しいデプロイ」を選択します。
2. 「アドオン」の横にある歯車アイコンをクリックし、「ウェブアプリ」を選択します。
3. 「実行するユーザー」を「自分」に、「アクセス権限」を「全員」(または必要に応じて制限)に設定します。
4. 「デプロイ」ボタンをクリックします。初回は、承認が必要になる場合がありますので、画面の指示に従って承認してください。
5. デプロイが完了すると、ウェブアプリURL が表示されます。このURLをコピーしてください。
6. Slackアプリの「Slash Commands」設定画面に戻り、先ほど設定したコマンドの「Request URL」に、このGASのウェブアプリURLを貼り付けて保存します。
これで、Slackで /hello world と入力すると、GASから「Hello, world!GASからの応答です。」というメッセージが返ってくるようになります!
まとめ
今回は、GASを使ってSlack Botを作成する基本的な方法として、Incoming Webhookによるメッセージ送信と、Slash Commandsによるインタラクティブな応答の実装方法をご紹介しました。
GASを使えば、特別な準備なく、JavaScriptの知識を活かして様々なSlack Botを開発できます。例えば、Googleカレンダーの予定をSlackに通知したり、Googleフォームの回答をSlackに連携させたりと、業務効率化の可能性は無限大です。
ぜひ、今回学んだことを活かして、あなただけの便利なSlack Botを作成してみてください!
次回は、さらに高度なSlack APIの活用方法や、GASとの連携による複雑なBot開発について解説していく予定です。お楽しみに!
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。