GASでSlack Bot作成!初心者でも簡単ステップ解説
/ 初心者向け
GASでSlack Bot作成!初心者でも簡単ステップ解説
こんにちは!GAS専門ブロガーの〇〇です。
今回は、Google Apps Script (GAS) を使って、Slackに自動応答するBotを簡単に作成する方法を解説します。プログラミング初心者の方でも、この記事を読めばすぐに自分だけのSlack Botが作れるようになりますよ!
なぜGASでSlack Bot?
Slack Botを作成する方法はいくつかありますが、GASを使うメリットは以下の通りです。
- 無料ではじめられる: Googleアカウントがあればすぐに利用できます。
- JavaScriptベース: Web開発でよく使われるJavaScriptに似た文法なので、学習コストが比較的低いです。
- Googleサービスとの連携: Googleカレンダーやスプレッドシートなど、他のGoogleサービスと連携させやすいです。
- サーバー不要: GASはGoogleのサーバー上で実行されるため、自分でサーバーを用意する必要がありません。
準備するもの
- Googleアカウント
- Slackワークスペース
ステップ1:Slack Appの作成
まずは、Slack側でBotの「App」を作成します。
1. Slack App Directoryにアクセス: https://api.slack.com/apps にアクセスし、「Create New App」ボタンをクリックします。
2. 「From scratch」を選択: 「Create an App」画面で、「From scratch」を選択します。
3. App NameとWorkspaceを選択: Appの名前(例: MyGASBot)と、作成するワークスペースを選択し、「Create App」ボタンをクリックします。
4. 「OAuth & Permissions」の設定: 左側のメニューから「OAuth & Permissions」を選択します。
5. 「Scopes」の追加: 「Scopes」セクションまでスクロールし、「Bot Token Scopes」の「Add an OAuth Scope」ボタンをクリックします。
chat:write: Botがチャンネルにメッセージを投稿できるようにします。channels:read: Botがチャンネルの情報を読み取れるようにします。(必要に応じて)users:read: Botがユーザー情報を読み取れるようにします。(必要に応じて)
6. 「Install to Workspace」: ページ上部に戻り、「Install to Workspace」ボタンをクリックし、権限を付与します。
7. 「Bot User OAuth Token」の取得: インストールが完了すると、「OAuth & Permissions」ページに「Bot User OAuth Token」が表示されます。このトークンは後でGASからSlackにアクセスするために必要なので、コピーしておきましょう。
ステップ2:GASプロジェクトの作成とコード記述
次に、GASでBotのロジックを作成します。
1. GASプロジェクトの作成: Googleドライブを開き、「新規」→「その他」→「Google Apps Script」を選択して、新しいスクリプトファイルを作成します。
2. プロジェクト名の変更: プロジェクトエディタが開いたら、左上の「無題のプロジェクト」をクリックして、分かりやすい名前に変更します(例: SlackGASBot)。
3. コードの記述: 以下のコードをエディタに貼り付けます。
function doPost(e) {
// Slackから送信されたイベントのタイプを取得
var eventType = e.parameter.type;
// コマンドが「hello」の場合の応答
if (eventType === 'url_verification') {
// SlackからのURL検証リクエストへの応答
return ContentService.createTextOutput(e.parameter.challenge);
} else if (e.parameter.event && e.parameter.event.type === 'message') {
var message = e.parameter.event.text;
var channelId = e.parameter.event.channel;
var userId = e.parameter.event.user;
Logger.log('Received message: ' + message + ' from user: ' + userId + ' in channel: ' + channelId);
// Bot自身からのメッセージは無視する
if (e.parameter.event.subtype === 'bot_message') {
return;
}
// 「こんにちは」と返信
if (message.includes('こんにちは')) {
var responseText = 'こんにちは!GAS Botです。何かお手伝いできることはありますか?';
slackPostMessage(channelId, responseText);
}
}
}
function slackPostMessage(channel, text) {
var slackToken = 'YOUR_SLACK_BOT_TOKEN'; // ここに取得したBot User OAuth Tokenを入力
var apiUrl = 'https://slack.com/api/chat.postMessage';
var options = {
'method' : 'post',
'contentType': 'application/json',
'headers': {
'Authorization': 'Bearer ' + slackToken
},
'payload' : JSON.stringify({
'channel': channel,
'text': text
})
};
UrlFetchApp.fetch(apiUrl, options);
}
コードの説明:
doPost(e): SlackからWebHookでデータが送られてきた際に実行される関数です。eには送信されたデータが含まれます。e.parameter.type === 'url_verification': SlackがWebHook URLの検証を行う際に送信してくるリクエストです。challengeの値をそのまま返します。e.parameter.event.type === 'message': メッセージが送信されたイベントです。e.parameter.event.text: メッセージの内容です。e.parameter.event.channel: メッセージが送信されたチャンネルIDです。slackPostMessage(channel, text): Slack APIを呼び出してメッセージを投稿する関数です。YOUR_SLACK_BOT_TOKEN: ここに、ステップ1で取得した「Bot User OAuth Token」を貼り付けてください。
4. スクリプトの保存: 保存ボタン(フロッピーディスクのアイコン)をクリックして、スクリプトを保存します。
ステップ3:GASのデプロイとSlackへの登録
作成したGASをSlackから呼び出せるように設定します。
1. 「デプロイ」→「新しいデプロイ」: プロジェクトエディタの上部にある「デプロイ」ボタンをクリックし、「新規デプロイ」を選択します。
2. 「ウェブアプリ」を選択: 「Add New Deployment」画面で、歯車アイコンの「Add type」をクリックし、「ウェブアプリ」を選択します。
3. 「実行するユーザー」と「アプリへのアクセス権」の設定:
- 「実行するユーザー」は「私」を選択します。
- 「アプリへのアクセス権」は「全員」を選択します。(セキュリティ上の理由で「特定の人」に限定することも可能ですが、今回は「全員」で構いません。)
4. 「デプロイ」ボタンをクリック: 「デプロイ」ボタンをクリックします。
5. 「承認が必要です」の表示: 初めてデプロイする場合、「承認が必要です」という画面が表示されます。クリックして、Googleアカウントへのアクセス権限を承認します。
6. 「ウェブアプリURL」の取得: デプロイが完了すると、「ウェブアプリURL」が表示されます。このURLをコピーしておきましょう。
7. Slack Appに戻る: ステップ1で作成したSlack Appの設定画面に戻ります。
8. 「Interactivity & Shortcuts」または「Event Subscriptions」の設定:
- 「Event Subscriptions」を選択: 左側のメニューから「Event Subscriptions」を選択します。
- 「Request URL」にGASのURLを貼り付け: 「Event Subscriptions」を「On」にし、「Request URL」に、先ほどコピーしたGASの「ウェブアプリURL」を貼り付けます。
- 「Subscribe to bot events」でイベントを追加: 「Bot User Events」の「Add Bot User Event」をクリックし、「message.channels」を選択します。これで、チャンネルにメッセージが投稿された際にGASに通知されるようになります。
- 「Save Changes」をクリック。
補足: もし、Slash Command (/helloのようなコマンド) を使いたい場合は、「Interactivity & Shortcuts」または「Slash Commands」の設定も必要になりますが、今回はメッセージへの自動応答に絞って説明しました。
ステップ4:動作確認
いよいよBotの動作確認です!
1. Slackチャンネルで「こんにちは」と入力: Botを招待したいチャンネルで、こんにちは と入力してメッセージを送信してみてください。
2. Botからの応答を確認: しばらくすると、GAS Botから「こんにちは!GAS Botです。何かお手伝いできることはありますか?」というメッセージが返ってくれば成功です!
まとめ
今回は、GASを使って簡単なSlack Botを作成する方法を解説しました。WebHookの設定やGASのデプロイなど、少し手順が多く感じられたかもしれませんが、一つ一つ進めれば決して難しくありません。
このBotをベースに、さらに機能を追加していくことで、より便利なSlack Botを作ることができます。例えば、
- 特定のキーワードに反応させて、詳細な情報を返す
- Googleカレンダーの予定を通知する
- スプレッドシートのデータを参照して、Slackに表示する
など、アイデア次第で無限に拡張可能です!
ぜひ、この機会にGASとSlack Botの世界を楽しんでみてください!
それでは、また次回のブログでお会いしましょう!
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。