GASでSlack Botを爆速作成!基本から応用まで徹底解説
/ 初心者向け
GASでSlack Botを爆速作成!基本から応用まで徹底解説
こんにちは!GAS専門ブロガーの〇〇です。
「もっと業務を効率化したい」「チームのコミュニケーションを円滑にしたい」
そんな時、Slack Botの導入を検討している方もいるのではないでしょうか?
実は、Google Apps Script(GAS)を使えば、コーディング経験が少なくても、誰でも簡単にオリジナルのSlack Botを作成できるんです!
この記事では、GASでSlack Botを作成する際の基本的な手順から、よくある疑問や応用的な使い方まで、サンプルコードを交えながら分かりやすく解説していきます。
なぜGASでSlack Botを作るのか?
GASでSlack Botを作成するメリットはたくさんあります。
- 手軽さ: Googleアカウントがあればすぐに始められます。
- ノーコード・ローコード: 複雑なサーバー構築や環境設定は不要です。
- 連携の強み: Google Workspace(Gmail, スプレッドシート, ドキュメントなど)との連携が容易です。
- コスト: 基本的に無料(※一定の利用量を超えた場合は有料プランもあります)。
Slack Bot作成の全体像
GASでSlack Botを作成する流れは、大きく分けて以下の2ステップになります。
1. Slack側の設定: Incoming Webhooksを設定し、Botにメッセージを送信するためのURLを取得する。
2. GAS側の実装: 取得したURLに対して、GASからHTTPリクエストを送信し、メッセージを投稿するスクリプトを作成する。
Step 1: Slack側の設定(Incoming Webhooks)
まず、Botがメッセージを投稿できるように、Slack側で「Incoming Webhooks」という機能を使えるように設定します。
1. Slackアプリの追加
- Slackのワークスペースに管理権限があることを確認してください。
- Slackの「App Directory」にアクセスします。
- 「Build」 -> 「Create an app」 -> 「From scratch」を選択します。
- App Name(アプリ名)とDevelopment Slack workspace(開発するワークスペース)を選択し、「Create App」をクリックします。
2. Incoming Webhooksの有効化
- 作成したアプリの「Features」メニューから「Incoming Webhooks」を選択します。
- 「Activate Incoming Webhooks」のスイッチをONにします。
- 「Add New Webhook to Workspace」ボタンをクリックします。
- メッセージを投稿したいチャンネルを選択し、「Allow」をクリックします。
3. Webhook URLの取得
- 設定が完了すると、「Webhook URLs」という項目にURLが表示されます。このURLが、GASからメッセージを投稿する際に必要になります。
- このURLは他人に見られないように、大切に保管してください。
Step 2: GAS側の実装
次に、取得したWebhook URLを使って、GASからSlackにメッセージを投稿するスクリプトを作成します。
1. GASプロジェクトの作成
- Google ドライブを開き、「新規」->「その他」->「Google Apps Script」を選択して、新しいプロジェクトを作成します。
- プロジェクト名を分かりやすいものに変更しましょう(例:
SlackBotSender)。
2. サンプルコード
以下のコードをGASエディタに貼り付けてください。
function sendSlackMessage() {
var webhookUrl = 'ここにSlackから取得したWebhook URLを貼り付ける'; // ★★★ここを置き換えてください
var message = {
"text": "こんにちは!GASから投稿されたメッセージです!",
"username": "GAS Bot", // Botの名前
"icon_emoji": ":robot_face:" // Botのアイコン(絵文字)
};
var options = {
"method": "post",
"contentType": "application/json",
"payload": JSON.stringify(message)
};
UrlFetchApp.fetch(webhookUrl, options);
}
'ここにSlackから取得したWebhook URLを貼り付ける'の部分を、先ほどSlackで取得した実際のWebhook URLに置き換えてください。messageオブジェクトで、投稿するメッセージの内容、Botの名前、アイコンなどを設定できます。詳しくはSlackのAPIドキュメントを参照してください。
3. スクリプトの実行
- GASエディタの上部にある「実行」ボタン(▶︎ のアイコン)をクリックします。
- 初めて実行する際には、スクリプトへのアクセス許可を求められます。内容を確認し、許可してください。
- 実行が成功すると、指定したSlackチャンネルにメッセージが投稿されているはずです!
応用編:定時投稿やイベントトリガー
GASの強力な機能を使えば、Slack Botをさらに便利に活用できます。
1. 定時投稿
- GASの「トリガー」機能を使えば、指定した時間に自動でメッセージを投稿させることができます。
- GASエディタで「時計」のアイコン(トリガー)をクリックし、「トリガーを追加」から「時間主導型」を選択し、投稿したい頻度や時間を設定します。
2. スプレッドシートからの情報取得
- スプレッドシートに保存したデータをSlackに通知するBotも作成できます。
- 例えば、タスク管理シートの期限が迫っているタスクを毎朝Slackに通知する、といったことが可能です。
function sendSpreadsheetDataToSlack() {
var webhookUrl = 'ここにSlackから取得したWebhook URLを貼り付ける';
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('タスクリスト'); // ★★★シート名を置き換えてください
var data = sheet.getDataRange().getValues();
var message = "今日のタスク:";
for (var i = 1; i < data.length; i++) { // ヘッダー行をスキップ
var task = data[i][0]; // A列のタスク名
var dueDate = new Date(data[i][1]); // B列の期日
var today = new Date();
today.setHours(0, 0, 0, 0); // 時間をリセットして比較
// 期日が今日か、または期日が過ぎている場合
if (dueDate.setHours(0, 0, 0, 0) === today.getTime() || dueDate < today) {
message += "\n- " + task + " (期日: " + Utilities.formatDate(dueDate, 'JST', 'yyyy/MM/dd') + ")";
}
}
if (message === "今日のタスク:") {
message = "今日のタスクはありません!";
}
var payload = {
"text": message,
"username": "タスク通知 Bot",
"icon_emoji": ":calendar:"
};
var options = {
"method": "post",
"contentType": "application/json",
"payload": JSON.stringify(payload)
};
UrlFetchApp.fetch(webhookUrl, options);
}
まとめ
いかがでしたでしょうか?
GASを使えば、Slack Botの作成は驚くほど簡単です。
今回ご紹介した基本的なメッセージ送信機能から、定時投稿、スプレッドシートとの連携まで、アイデア次第で様々な自動化が実現できます。
ぜひ、この記事を参考に、あなたのチームにぴったりのSlack Botを作成してみてください!
ご不明な点があれば、お気軽にコメントで質問してくださいね!
それでは、また次回の記事でお会いしましょう!
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。