GASでSlack Botを自作!初心者でも簡単解説
/ 初心者向け
GASでSlack Botを自作!初心者でも簡単解説
こんにちは!GAS専門ブロガーの〇〇です。
今回は、Google Apps Script(GAS)を使って、皆さんのワークフローを便利にするオリジナルのSlack Botを作成する方法を、初心者の方にも分かりやすく解説していきます。
Slack Botがあれば、定型的な通知を自動化したり、社内ツールとの連携をスムーズにしたりと、日々の業務効率を格段に向上させることができます。GASを使えば、特別な開発環境を用意することなく、ブラウザ上で手軽にBotを開発できるのが魅力です。
1. Slack Botの準備
まずは、Slack側でBotを作成し、必要な情報を取得します。
1. Slackアプリの作成: Slackのワークスペースで「Custom Integrations」にアクセスし、「Apps」から「Build your own app」を選択します。新しいアプリを作成し、App NameとDevelopment Slack Workspaceをそれぞれ設定します。
2. Bot Tokenの取得: 作成したアプリの設定画面で、「OAuth & Permissions」に進み、「Scopes」セクションで必要な権限(例: chat:write)を追加します。「Install App」をクリックし、インストールを承認すると、「Bot User OAuth Token」が発行されます。このトークンは後ほどGASからSlackにアクセスするために必要なので、安全な場所にメモしておきましょう。
2. GASプロジェクトの作成と設定
次に、GASプロジェクトを作成し、Slack APIを利用するための設定を行います。
1. GASプロジェクトの作成: Googleドライブを開き、「新規」>「その他」>「Google Apps Script」を選択して、新しいスクリプトエディタを開きます。プロジェクトに分かりやすい名前を付けましょう(例: 「Slack通知Bot」)。
2. Slack APIライブラリの利用(推奨): GASには、外部APIとの連携を容易にするためのライブラリが用意されています。今回はSlack APIを利用するため、UrlFetchApp を直接使うこともできますが、より簡潔に記述するために、コミュニティで開発されているSlack API用のライブラリを利用することも検討してみてください。今回は最も基本的な UrlFetchApp を使った例で説明します。
3. GASでのSlack Tokenの設定: 取得したBot Tokenは、スクリプトに直接埋め込むのはセキュリティ上良くありません。GASの「スクリプトのプロパティ」機能を使って、安全に管理しましょう。
- スクリプトエディタの「プロジェクトの設定」(歯車アイコン)を開き、「スクリプトのプロパティ」タブを選択します。
- 「プロパティを追加」ボタンをクリックし、プロパティ名に
SLACK_BOT_TOKEN、値に取得したBot Tokenを入力します。 - 「保存」をクリックします。
3. Slackにメッセージを送信するGASコード
いよいよ、Slackにメッセージを送信するGASコードを書いていきます。
function sendSlackMessage() {
// スクリプトのプロパティからSlack Bot Tokenを取得
const slackBotToken = PropertiesService.getScriptProperties().getProperty('SLACK_BOT_TOKEN');
// メッセージを送信したいチャンネルID
const channelId = 'YOUR_CHANNEL_ID'; // 例: C1234567890
// 送信するメッセージ
const message = '【GAS Bot】こんにちは!GASからSlackにメッセージを送信しました!';
if (!slackBotToken) {
Logger.log('Slack Bot Tokenが設定されていません。');
return;
}
// Slack APIのエンドポイント
const url = 'https://slack.com/api/chat.postMessage';
// リクエストヘッダー
const headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + slackBotToken
};
// リクエストボディ
const payload = {
'channel': channelId,
'text': message
};
// UrlFetchApp を使ってSlack APIにPOSTリクエストを送信
try {
const response = UrlFetchApp.fetch(url, {
method: 'post',
headers: headers,
payload: JSON.stringify(payload)
});
const responseCode = response.getResponseCode();
const responseBody = response.getContentText();
if (responseCode === 200) {
Logger.log('メッセージの送信に成功しました: ' + responseBody);
} else {
Logger.log('メッセージの送信に失敗しました。レスポンスコード: ' + responseCode + ', レスポンスボディ: ' + responseBody);
}
} catch (e) {
Logger.log('エラーが発生しました: ' + e);
}
}
コードの解説:
PropertiesService.getScriptProperties().getProperty('SLACK_BOT_TOKEN')で、スクリプトのプロパティに保存したBot Tokenを取得しています。channelIdには、メッセージを送信したいSlackチャンネルのIDを指定します。チャンネルIDは、Slackのチャンネルを開いたときのURL(例:https://app.slack.com/client/T0123456789/C1234567890)の末尾にあるC1234567890の部分です。messageには、送信したいメッセージ内容を記述します。UrlFetchApp.fetch()を使って、Slack APIのchat.postMessageエンドポイントにPOSTリクエストを送信しています。ヘッダーには認証情報(Bot Token)を含め、ボディには送信先チャンネルとメッセージ内容をJSON形式で渡します。
4. GASスクリプトの実行とテスト
コードが完成したら、実際に実行してテストしてみましょう。
1. 関数の選択: スクリプトエディタの上部にある関数選択ドロップダウンで sendSlackMessage を選択します。
2. 実行: 「実行」ボタン(▶︎アイコン)をクリックします。
3. 承認: 初めて実行する際には、スクリプトがGoogleサービス(Apps Script Dashboard)や外部サービス(Slack API)にアクセスするための権限を求めるダイアログが表示されます。「許可を確認」をクリックし、表示される権限を確認して「許可」をクリックします。
Slackワークスペースを確認し、指定したチャンネルにメッセージが届いているか確認してください。もしエラーが出た場合は、Logger.logに出力されるメッセージを確認して、原因を特定しましょう。
5. より高度な機能へ(発展)
今回の例では基本的なメッセージ送信機能のみを実装しましたが、GASとSlack APIを組み合わせることで、さらに様々な機能を持つBotを作成できます。
- イベントへの応答: Slackからのイベント(メッセージ受信、リアクションなど)を受け取って、それに応じた処理を実行する。
- リマインダー機能: 特定のタイミングで自動的にメッセージを送信する。
- 外部データとの連携: Googleスプレッドシートや他のWebサービスからデータを取得し、Slackに通知する。
- インタラクティブなUI: ボタンやドロップダウンメニュー付きのメッセージを送信し、ユーザーからの入力を受け付ける。
これらの機能を実現するには、Slack APIのドキュメントを参考に、GASからHTTPリクエストを送信したり、WebアプリケーションとしてGASをデプロイしたりする必要があります。
まとめ
いかがでしたでしょうか?GASを使えば、プログラミングの経験が浅い方でも、比較的簡単にオリジナルのSlack Botを作成できることがお分かりいただけたかと思います。
今回紹介した基本的なメッセージ送信機能から始め、ぜひ色々なアイデアを形にしてみてください。
次回は、Slackからのイベントを受け取って応答する、よりインタラクティブなBotの作成方法について解説する予定です。お楽しみに!
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。