GASでSlack Botを爆速作成!基本から応用まで徹底解説
/ 初心者向け
GASでSlack Botを爆速作成!基本から応用まで徹底解説
Slackは、チーム内のコミュニケーションを円滑にする強力なツールですが、さらにGAS(Google Apps Script)と組み合わせることで、その可能性は無限に広がります。本記事では、プログラミング初心者の方でも理解できるよう、GASを使ってSlack Botを作成する基本的な手順から、よくある疑問、そして実践的な応用例までを、ていねいに解説していきます。
1. GASとは?なぜSlack Bot作成に便利なのか
GASは、Google Workspace(Gmail, Google Drive, Google Sheetsなど)の機能を拡張し、自動化するためのJavaScriptベースのプログラミング言語です。ブラウザ上でコードを記述・実行できるため、特別な開発環境の準備は不要です。Slack Bot作成においては、以下の点がGASの強みとなります。
- 手軽さ: インストール不要で、Googleアカウントがあればすぐに始められます。
- 連携の容易さ: Googleフォームからのデータ取得、Gmailでの通知など、Googleサービスとの連携が非常に簡単です。
- 無料: 個人の利用であれば、ほとんどの場合無料で利用できます。
- リアルタイム実行: トリガーを設定すれば、特定のイベント(時間、フォーム送信など)に応じて自動的にBotを動作させられます。
2. Slack Bot作成の準備
GASでSlack Botを作成するには、まずSlack側での設定が必要です。ここでは、最も基本的な「Incoming Webhook」を使ったメッセージ送信Botを例に説明します。
2.1 Slackアプリの作成とWebhook URLの取得
1. Slackアプリの作成: SlackのAPIサイトにアクセスし、「Create an App」ボタンをクリックします。
2. 「From scratch」を選択: 今回はスクラッチから作成します。
3. アプリ名の設定とワークスペースの選択: 適切なアプリ名(例: GAS-Slack-Bot)と、Botを導入したいワークスペースを選択します。
4. 「Add basic features」から「Incoming Webhooks」を有効化: 左側のメニューから「Incoming Webhooks」を探し、トグルスイッチで「On」にします。
5. 「Add New Webhook to Workspace」をクリック: 新しいWebhookを作成します。
6. 投稿先のチャンネルを選択: Botからのメッセージを送信したいチャンネルを選択し、「Allow」をクリックします。
7. Webhook URLの取得: 画面に表示された Webhook URL をコピーしておきます。このURLは、BotからのメッセージをSlackに送信するための「宛先」のようなものです。
3. GASでSlack Botのコードを書く
準備ができたら、いよいよGASでコードを書いていきます。
1. GASエディタを開く: Googleドライブで新しいスプレッドシートを作成し、「拡張機能」->「Apps Script」を選択すると、GASエディタが開きます。
2. コードの記述: 以下のコードをコピーして、GASエディタに貼り付けます。
function sendSlackMessage() {
const webhookUrl = 'YOUR_WEBHOOK_URL'; // ここに取得したWebhook URLを貼り付ける
const message = {
text: 'こんにちは、GAS Slack Botです! \n Googleフォームからの新しい回答がありました。'
};
const options = {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(message)
};
UrlFetchApp.fetch(webhookUrl, options);
}
YOUR_WEBHOOK_URLの部分を、先ほどSlackで取得したWebhook URLに必ず置き換えてください。message.textに送信したいメッセージ内容を記述します。\nは改行を表します。
3. 保存: ファイル名を付けて保存します(例: SlackBot)。
4.GASでSlack Botをテスト実行する
コードが書けたら、動作確認です。
1. 関数を選択: GASエディタの上部にある関数選択ドロップダウンから sendSlackMessage を選択します。
2. 実行ボタンをクリック: 再生ボタン(▶)をクリックします。
3. 初回承認: 初めて実行する場合、スクリプトの承認を求められます。「許可を確認」をクリックし、Googleアカウントを選択、「詳細」から「(プロジェクト名)(安全ではないページ)に移動」をクリックし、「許可」をクリックします。
4. Slackを確認: 設定したチャンネルに、GASから送信されたメッセージが表示されているはずです。
5.応用例:Googleフォームの回答をSlackに通知する
GASとSlack Botの連携は、Googleフォームの回答をリアルタイムでSlackに通知するといった、非常に実用的な自動化が可能です。
1. Googleフォームの作成: 通知したい内容を質問項目とするGoogleフォームを作成します。
2. GASエディタを開く: フォームの「回答」タブから、スプレッドシートアイコンをクリックして回答をスプレッドシートに紐付けます。紐付けられたスプレッドシートを開き、「拡張機能」->「Apps Script」でGASエディタを開きます。
3. コードの修正: 以下のコードを参考に、先ほどの sendSlackMessage 関数を修正・追加します。
function sendFormResponseToSlack() {
const webhookUrl = 'YOUR_WEBHOOK_URL'; // ここに取得したWebhook URLを貼り付ける
// 現在アクティブなスプレッドシートとシートを取得
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 最新の回答行を取得 (ヘッダー行を除く)
const lastRow = sheet.getLastRow();
const range = sheet.getRange(lastRow, 1, 1, sheet.getLastColumn());
const values = range.getValues()[0]; // 2次元配列から1次元配列に変換
// ヘッダー行を取得 (最初の行)
const headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
let messageText = 'Googleフォームに新しい回答がありました!\n\n';
for (let i = 0; i < headers.length; i++) {
messageText += `${headers[i]}: ${values[i]}\n`;
}
const message = {
text: messageText
};
const options = {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(message)
};
UrlFetchApp.fetch(webhookUrl, options);
}
4. トリガーの設定: GASエディタの左側にある時計アイコン(トリガー)をクリックします。「トリガーを追加」ボタンをクリックし、以下の設定を行います。
- 実行する関数:
sendFormResponseToSlack - 実行するデプロイ:
Head - イベントのソースを選択:
スプレッドシートから - イベントの種類を選択:
送信時
これで、Googleフォームに新しい回答が送信されるたびに、自動的にSlackに通知が送られるようになります。
6.よくある質問とトラブルシューティング
- メッセージがSlackに届かない:
- Webhook URLが間違っていないか再確認してください。
- GASエディタで
UrlFetchApp.fetchの部分にエラーが出ていないか確認してください。 - SlackアプリのIncoming Webhooks機能が有効になっているか確認してください。
- エラーメッセージが表示される:
- GASエディタの実行ログ(「実行」メニューの「前回の実行」)を確認し、エラーの詳細を把握してください。
payloadの形式がJSONとして正しく整形されているか確認してください。- もっとリッチなメッセージを送りたい:
- Slackの Block Kit を利用することで、ボタンや画像、セクションなどを組み合わせたリッチなメッセージを作成できます。GASからもJSON形式で送信できます。
まとめ
GASを使えば、誰でも簡単に、そして低コストで高機能なSlack Botを作成できます。今回ご紹介した Incoming Webhook を使ったメッセージ送信や、Googleフォームとの連携は、日々の業務効率を大幅に向上させる第一歩となるでしょう。ぜひ、あなただけのオリジナルSlack Botを作成し、チームのコミュニケーションをさらに活性化させてください!
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。