GASでSlack Botを自作!基本から応用まで徹底解説
/ 初心者向け
GASでSlack Botを自作!基本から応用まで徹底解説
「もっと便利にチームのコミュニケーションをしたい」「定型的な報告を自動化したい」
そんな時、Slack Botの作成を検討する方も多いのではないでしょうか。実は、Google Apps Script (GAS) を使えば、プログラミング初心者でも比較的簡単にオリジナルのSlack Botを作成できるんです。
本記事では、GASの基本から、Slackとの連携方法、そして実際にBotを作成する手順までを、図解を交えながら分かりやすく解説していきます。GASとSlack Botの可能性を広げ、あなたのワークフローを劇的に改善しましょう!
GASとは?
Google Apps Script(GAS)は、Google Workspace(Gmail, Google Drive, Google Sheetsなど)の機能を拡張したり、自動化したりするためのJavaScriptベースのスクリプト言語です。ブラウザ上でコードを記述・実行できるため、特別な開発環境を用意する必要がありません。Googleアカウントがあればすぐに始められるのが魅力です。
なぜGASでSlack Botを作るのか?
GASでSlack Botを作成するメリットは、主に以下の点が挙げられます。
- 手軽さ: Googleアカウントがあればすぐに始められ、特別なツールは不要。
- 連携の容易さ: Google SheetsやGmailなど、他のGoogleサービスとの連携が容易。
- 無料: 一定の利用量までは無料で利用可能。
- 柔軟性: 独自の処理を記述し、カスタマイズ性の高いBotを作成できる。
Slack Botの基本構成要素
Slack Botを作成するには、大きく分けて以下の要素が必要になります。
1. Slack側の設定: Botアプリの作成と、Webhook URLの取得。
2. GAS側のスクリプト: Slackにメッセージを送信するためのコード。
Step 1: Slack側の設定
まずはSlack側でBotを作成し、GASからメッセージを送信するための準備をします。
1. Slack Appの作成
1. Slack API にアクセスし、「Create an App」ボタンをクリックします。
2. 「From scratch」を選択します。
3. App Name(アプリ名)と、App Directories への表示設定(Workspaceにインストールする場合はNoneでOK)を行います。そして、開発するWorkspaceを選択して「Create App」をクリックします。
2. Incoming Webhooksの有効化
作成したAppの設定画面で、左側のメニューから「Incoming Webhooks」を選択し、 「Activate Incoming Webhooks」をオンにします。
次に、「Add New Webhook to Workspace」ボタンをクリックし、メッセージを投稿したいチャンネルを選択して「Allow」をクリックします。これで、そのチャンネルにメッセージを投稿するためのWebhook URLが生成されます。
このWebhook URLはGASからSlackにメッセージを送る際に必要になるので、コピーして控えておきましょう。
Step 2: GAS側のスクリプト作成
次に、GASエディタでSlackにメッセージを送信するスクリプトを作成します。
1. GASプロジェクトの作成
1. Google Drive を開き、「新規」>「その他」>「Google Apps Script」を選択して新しいスクリプトプロジェクトを作成します。
2. プロジェクト名を分かりやすいものに変更します(例: SlackBotSender)。
2. スクリプトの記述
以下のコードをGASエディタに貼り付けます。
function sendMessageToSlack() {
var slackWebhookUrl = 'ここに取得したSlackのWebhook URLを貼り付け'; // ← ここを置き換える
var message = {
text: 'GASからこんにちは!これはテストメッセージです。'
};
var options = {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(message)
};
UrlFetchApp.fetch(slackWebhookUrl, options);
}
コードの説明:
slackWebhookUrl: 先ほどSlack側で取得したWebhook URLを貼り付けます。message: Slackに送信するメッセージの内容をJavaScriptオブジェクトで定義します。textプロパティにメッセージ本文を指定します。options:methodをpost、contentTypeをapplication/jsonに設定します。payloadには、JSON.stringify()で文字列化したメッセージオブジェクトを指定します。UrlFetchApp.fetch(): GASで外部URLにHTTPリクエストを送信するための関数です。ここでSlackのWebhook URLに対してPOSTリクエストを送信しています。
3. スクリプトの実行
1. GASエディタの上部にある「実行」ボタン(▶️のようなアイコン)をクリックします。
2. 初回実行時には、スクリプトの実行に必要な権限の許可を求められます。「権限を確認」をクリックし、指示に従って承認してください。
3. 実行が完了したら、Slackの指定したチャンネルにテストメッセージが投稿されているか確認しましょう。
応用編: Google Sheetsと連携したSlack Bot
GASの真価は、他のGoogleサービスとの連携にあります。ここでは、Google Sheetsに新しい行が追加されたら、その内容をSlackに通知するBotを作成してみましょう。
1. Google Sheetsの準備
- Slackに通知したい情報が含まれるGoogle Sheetsを作成します。例えば、A列にタスク名、B列に期日などを入力するシートです。
2. GASスクリプトの修正
以下のスクリプトは、Google Sheetsの変更を検知し、Slackに通知する例です。
function sendSheetDataToSlack() {
var spreadsheetId = 'ここにGoogle SheetsのスプレッドシートIDを貼り付け'; // ← ここを置き換える
var sheetName = 'Sheet1'; // ← 通知したいシート名
var slackWebhookUrl = 'ここに取得したSlackのWebhook URLを貼り付け'; // ← ここを置き換える
var ss = SpreadsheetApp.openById(spreadsheetId);
var sheet = ss.getSheetByName(sheetName);
// 前回の最終行番号をユーザープロパティに保存・取得する
var lastRow = PropertiesService.getUserProperties().getProperty('lastRow_' + spreadsheetId + '_' + sheetName) || 0;
var currentRow = sheet.getLastRow();
if (currentRow > lastRow) {
// 新しく追加された行のデータを取得
var range = sheet.getRange(lastRow + 1, 1, currentRow - lastRow, sheet.getLastColumn());
var data = range.getValues();
// Slackに送信するメッセージを作成
var messageText = '【新着タスク】\n';
for (var i = 0; i < data.length; i++) {
// 例: A列(タスク名), B列(期日)
messageText += '- ' + data[i][0] + ' (期日: ' + data[i][1] + ')\n';
}
var message = {
text: messageText
};
var options = {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(message)
};
UrlFetchApp.fetch(slackWebhookUrl, options);
// 今回処理した最終行番号を保存
PropertiesService.getUserProperties().setProperty('lastRow_' + spreadsheetId + '_' + sheetName, currentRow);
}
}
コードの説明:
spreadsheetId: 通知したいGoogle SheetsのスプレッドシートIDを貼り付けます。(URLの/d/と/editの間の文字列です)sheetName: 通知したいシートの名前を指定します。PropertiesService.getUserProperties(): GASでユーザー固有の設定を保存・取得できるサービスです。これにより、前回処理した行を記憶しておき、差分のみを通知できます。sheet.getRange().getValues(): 指定した範囲のセルの値を取得します。- ループ処理で取得したデータを整形し、Slackに送信するメッセージを作成しています。
3. トリガーの設定
このスクリプトを自動実行させるために、トリガーを設定します。GASエディタの左側にある時計アイコン(トリガー)をクリックし、「トリガーを追加」ボタンをクリックします。
- 実行する関数を選択:
sendSheetDataToSlack - 実行するデプロイを選択:
Head - イベントのソースを選択:
スプレッドシートから - イベントの種類を選択:
変更時 - 通知設定: 適宜設定
「保存」をクリックすると、Google Sheetsが変更されるたびにGASスクリプトが実行され、Slackに通知が送信されるようになります。
まとめ
GASを使えば、複雑なコーディングなしに、あなたのワークフローを便利にするカスタムSlack Botを簡単に作成できます。今回ご紹介した内容は基本ですが、これを応用すれば、もっと多様な自動化が可能になります。
- Gmail連携: 特定のメールを受信したらSlackに通知
- Google Calendar連携: イベントのリマインダーをSlackに送信
- 外部API連携: 天気予報やニュースなどの情報をSlackに定期的に投稿
GASとSlack Botを組み合わせることで、チームの生産性向上はもちろん、日々の業務をより快適にすることができるでしょう。
ぜひ、あなただけのオリジナルSlack Bot作りに挑戦してみてください!
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。