GASでSlack Botを爆速作成!初心者でも簡単解説
/ 初心者向け
GASでSlack Botを爆速作成!初心者でも簡単解説
Slackは、チームのコミュニケーションを円滑にする強力なツールですが、さらにGAS(Google Apps Script)と組み合わせることで、自動化や情報集約が格段に便利になります。本記事では、GASを使ってオリジナルのSlack Botを作成する基本的な手順を、初心者の方でも理解できるように、ステップバイステップで解説していきます。
なぜGASでSlack Botを作るのか?
GASはGoogle Workspace(Gmail、Googleスプレッドシート、Googleカレンダーなど)と連携しやすいJavaScriptベースのスクリプト言語です。特別な環境構築は不要で、ブラウザ上でコードを書いてすぐに実行できます。Slack BotにGASを連携させることで、以下のようなことが可能になります。
- GoogleスプレッドシートのデータをSlackに通知する
- Googleフォームの回答をSlackに自動送信する
- 特定の条件でSlackにリマインダーを送信する
- Slackからのコマンドに応答してGASの処理を実行する
Slack Botの基本構成要素
Slack Botを作成するには、主に以下の2つの要素が必要です。
1. Slack側の設定: Slackワークスペースに「App」を作成し、Botトークンを取得します。
2. GAS側のコード: Slack APIを呼び出すためのJavaScriptコードを記述します。
ステップ1: Slack Appの作成とトークン取得
まずはSlack側でBotの「App」を作成しましょう。
1. Slack APIサイトにアクセス: https://api.slack.com/ にアクセスし、「Create an app」ボタンをクリックします。
2. 「From scratch」を選択: 「Create an app」画面で、「From scratch」を選択します。
3. App名とワークスペースを設定: Appの名前(例: MyGASBot)と、Botを導入するSlackワークスペースを選択し、「Create App」をクリックします。
4. Bot Token Scopesの設定: 左側のメニューから「OAuth & Permissions」を選択します。「Scopes」セクションの「Bot Token Scopes」で、「Add an OAuth Scope」をクリックし、chat:write と commands (コマンドを受け付ける場合)を追加します。
5. Appをワークスペースにインストール: ページ上部に戻り、「Install to Workspace」ボタンをクリックして、Appをワークスペースにインストールします。これにより、Bot Token(xoxb-...で始まる文字列)が発行されます。このトークンは後ほどGASで利用するので、大切に保管しておきましょう。
ステップ2: GASでSlackにメッセージを送信する
次に、GASでSlackにメッセージを送信するコードを記述します。GASエディタを開き、新しいプロジェクトを作成してください。
function postToSlack() {
const slackToken = 'YOUR_SLACK_BOT_TOKEN'; // ステップ1で取得したBot Tokenに置き換えてください
const channel = '#general'; // メッセージを送信したいチャンネル名(例: #general)
const message = 'こんにちは!GASからSlackにメッセージを送信しました!';
const url = 'https://slack.com/api/chat.postMessage';
const payload = {
channel: channel,
text: message
};
const options = {
method: 'post',
contentType: 'application/json',
headers: {
'Authorization': 'Bearer ' + slackToken
},
payload: JSON.stringify(payload)
};
try {
UrlFetchApp.fetch(url, options);
Logger.log('メッセージをSlackに送信しました。');
} catch (e) {
Logger.log('Slackへのメッセージ送信に失敗しました: ' + e);
}
}
コードの説明:
YOUR_SLACK_BOT_TOKEN: ステップ1で取得したBot Tokenに置き換えてください。channel: メッセージを送信したいSlackチャンネル名を指定します。message: 送信するメッセージ内容です。UrlFetchApp.fetch(): Slack APIにHTTP POSTリクエストを送信します。
この関数をGASエディタで実行すると、指定したチャンネルにメッセージが投稿されます。
ステップ3: Slackからのコマンドに応答する(Incoming Webhooks / Slash Commands)
Slack Botにコマンド(例: /mycommand)を送信して、GASの処理を実行させたい場合は、Slash Commandsという機能を利用します。この設定は少し複雑になるため、今回は「Incoming Webhooks」という、より簡単な方法でSlackからGASに情報を連携させる例を紹介します。これは、GAS側でURLを生成し、そのURLにPOSTすることでSlackにメッセージを送信する、という逆のパターンです。
Incoming Webhooksの設定
1. Slack Appの設定画面で、左メニューから「Incoming Webhooks」を選択します。
2. 「Activate Incoming Webhooks」をオンにします。
3. 「Add New Webhook to Workspace」ボタンをクリックします。
4. メッセージを投稿したいチャンネルを選択し、「Allow」をクリックします。すると、Webhook URL(https://hooks.slack.com/services/...で始まるURL)が生成されます。
GASでのIncoming Webhooks利用
GAS側では、このWebhook URLにPOSTリクエストを送ることで、Slackにメッセージを送信できます。
function sendViaWebhook() {
const webhookUrl = 'YOUR_INCOMING_WEBHOOK_URL'; // ステップ3で取得したWebhook URLに置き換えてください
const message = 'Incoming Webhook経由で送信!';
const payload = {
text: message
};
const options = {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(payload)
};
try {
UrlFetchApp.fetch(webhookUrl, options);
Logger.log('Webhook経由でSlackにメッセージを送信しました。');
} catch (e) {
Logger.log('Webhook経由でのSlackメッセージ送信に失敗しました: ' + e);
}
}
この関数を実行すると、指定したチャンネルにメッセージが投稿されます。
さらに活用するために
今回ご紹介した内容は、GASでSlack Botを作成する上での基本中の基本です。ここからさらに、以下のような機能を追加していくことができます。
- Googleスプレッドシートとの連携:GASからスプレッドシートのデータを読み取り、Slackに通知する。
- Googleカレンダーとの連携:GASからカレンダーの予定を取得し、Slackにリマインダーを送信する。
- APIの活用:外部API(天気予報、ニュースなど)と連携して、Slackに情報を表示する。
- インタラクティブ機能:ボタンやメニューを使った、よりリッチなユーザーインターフェースをSlack上に作成する。
GASとSlack Botを組み合わせることで、日々の業務を劇的に効率化できる可能性は無限大です。ぜひ、ご自身の業務に合わせたオリジナルのBotを作成してみてください!
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。