GASでSlack Botを爆速作成!基本から応用まで徹底解説
/ 初心者向け
GASでSlack Botを爆速作成!基本から応用まで徹底解説
「Slackの通知を自動化したい」「特定のコマンドに応答するBotが欲しい」
そんな時、GAS(Google Apps Script)を使えば、プログラミング初心者でも手軽にSlack Botを作成できます。GASはGoogle Workspaceのサービスと連携しやすく、特別な環境構築も不要なのが魅力です。
この記事では、GASでSlack Botを作成する基本的な流れから、ちょっとした応用までを、具体的なコード例を交えながら分かりやすく解説します。ぜひ、あなただけの便利なSlack Botを作ってみましょう!
1. Slack Botの準備
まず、Slack側でBotを作成し、必要な情報を取得します。
1. Slackワークスペースにログイン
2. 「App Directory」から「Build」を選択
3. 「Create an app」をクリック
4. 「From scratch」を選択
5. アプリ名とワークスペースを入力
6. 「Create App」をクリック
アプリ作成後、「Features」メニューから以下の設定を行います。
- OAuth & Permissions: 「Scopes」の「Bot Token Scopes」で
chat:writeを追加します。これにより、Botがメッセージを送信できるようになります。 - Install App: 「Install to Workspace」をクリックし、Botをワークスペースにインストールします。インストール後、「Bot User OAuth Token」が表示されるので、これをコピーしておきましょう。このトークンはGASからSlack APIにアクセスする際に必要になります。
2. GASプロジェクトの作成と設定
次に、GASプロジェクトを作成し、Slack APIを呼び出すための準備をします。
1. Google スプレッドシートを開く
2. 「拡張機能」>「Apps Script」を選択
3. スクリプトエディタが開いたら、function.gs (または任意のファイル名) に以下のコードを記述します。
function sendSlackMessage() {
// Slack APIに送信するメッセージとチャンネルを設定
var message = {
"text": "こんにちは!GASから送信されたメッセージです。",
"channel": "#general" // メッセージを送信したいチャンネルIDを指定
};
// Slack APIのエンドポイント
var url = "https://slack.com/api/chat.postMessage";
// Slack APIへPOSTリクエストを送信するためのオプション
var options = {
"method": "post",
"contentType": "application/json",
"headers": {
"Authorization": "Bearer YOUR_SLACK_BOT_TOKEN"
},
"payload": JSON.stringify(message)
};
// Slack APIを呼び出す
UrlFetchApp.fetch(url, options);
Logger.log("Slackメッセージを送信しました。");
}
コードの説明:
message: 送信するメッセージの内容と、送信先のチャンネルを指定します。channelには、#generalのようにチャンネル名(ID)を指定してください。url: Slack APIのchat.postMessageエンドポイントを指定しています。これはメッセージを送信するためのAPIです。options: POSTリクエストに必要な情報を設定します。method: "post" でPOSTメソッドを指定。contentType: "application/json" でJSON形式で送信することを指定。headers: "Authorization" ヘッダーに、先ほど取得した「Bot User OAuth Token」をBearer YOUR_SLACK_BOT_TOKENの形式で設定します。payload: 送信するメッセージの内容をJSON形式で指定します。JavaScriptオブジェクトをJSON.stringify()で文字列に変換します。UrlFetchApp.fetch(url, options): GASの機能を使って、指定したURLにオプションを指定してHTTPリクエストを送信します。
【重要】 YOUR_SLACK_BOT_TOKEN は、必ずご自身のSlack Bot User OAuth Tokenに置き換えてください。
3. GASからSlack Botを動かす
GASプロジェクトが準備できたら、実際に動かしてみましょう。
1. スクリプトエディタの保存ボタン(フロッピーディスクのアイコン)をクリックしてスクリプトを保存します。
2. 実行したい関数(例: sendSlackMessage)を選択し、実行ボタン(▶︎アイコン)をクリックします。
3. 初回実行時には、スクリプトに権限の付与を求められます。「承認」をクリックし、指示に従って権限を付与してください。
これで、指定したSlackチャンネルにBotからのメッセージが送信されるはずです!
4. トリガーを使って自動化する
GASの強力な機能の一つに「トリガー」があります。これにより、特定の時間やイベントに基づいてGASを自動実行できます。
例えば、「毎日朝9時に今日のタスクリストをSlackに送信する」といったことも可能です。
1. スクリプトエディタの左側にある時計のアイコン(トリガー)をクリックします。
2. 右下にある「トリガーを追加」ボタンをクリックします。
3. 以下の設定を行います。
- 実行する関数を選択:
sendSlackMessageなど、実行したい関数を選びます。 - 実行するデプロイを選択: 「ヘッド」を選択します。
- イベントのソースを選択: 「時間主導型」を選択します。
- 時間の間隔を選択: 「特定の日時タイマー」を選択し、実行したい曜日と時間(例: 毎週、月曜日、午前9時)を設定します。
4. 「保存」をクリックします。
これで、設定した時間に自動でSlackメッセージが送信されるようになります。
5. 応用例:Incoming Webhooks でSlackに情報を投稿
GASからSlack APIを直接叩く方法以外にも、Incoming Webhooks という機能を使うと、より手軽にSlackに情報を投稿できます。
Incoming Webhooks を使うと、特定のURLにHTTP POSTリクエストを送るだけで、指定したチャンネルにメッセージを投稿できます。
準備:
1. Slackアプリの設定画面に戻ります。
2. 「Features」>「Incoming Webhooks」を選択します。
3. 「Activate Incoming Webhooks」をオンにします。
4. 「Add New Webhook to Workspace」をクリックします。
5. メッセージを投稿したいチャンネルを選択し、「Allow」をクリックします。
すると、Webhooks URLが生成されます。このURLをコピーしておきましょう。
GASコード例:
function sendSlackMessageViaWebhook() {
var webhookUrl = "YOUR_INCOMING_WEBHOOK_URL"; // ここにご自身のWebhook URLを設定
var message = {
"text": "Incoming Webhook経由で送信されたメッセージです!",
"username": "GAS Bot", // Botの名前を設定
"icon_emoji": ":rocket:" // Botのアイコンを設定(絵文字)
};
var options = {
"method": "post",
"contentType": "application/json",
"payload": JSON.stringify(message)
};
UrlFetchApp.fetch(webhookUrl, options);
Logger.log("Webhook経由でSlackメッセージを送信しました。");
}
YOUR_INCOMING_WEBHOOK_URL は、先ほど取得したWebhook URLに置き換えてください。この関数を実行すれば、Webhook経由でSlackにメッセージが投稿されます。Incoming Webhooks は、Bot Tokenの管理が不要で、POSTリクエストだけで済むため、非常に手軽です。
まとめ
GASを使えば、Googleのサービスとの連携はもちろん、Slack Botの作成も容易であることがお分かりいただけたかと思います。今回ご紹介した基本的なメッセージ送信から、トリガーによる自動化、Incoming Webhooks の活用まで、様々な方法でSlack Botをカスタマイズできます。
この入門編を参考に、ぜひあなたの業務効率化やチームのコミュニケーション活性化に役立つSlack Botを作成してみてください!
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。