初心者向け!Google Apps Scriptで簡単にSlackボットを作る方法
準備:SlackとGASをつなぐための基礎
まずはSlackとGASをつなぐ準備から始めます。最初のステップはSlackのワークスペースで新しいアプリを作成することです。
Slack APIトークン取得
Slackでのアプリ作成は以下の手順を参考にしてください。
- Slack APIのページに行き、「Create New App」ボタンをクリックします。
- 必要な情報を入力してアプリを作成します。
- 「OAuth & Permissions」からトークンを取得します。これは後でGASからSlack Botを使うために必要です。
このトークンがあれば、GASからSlackのチャンネルにメッセージを送れます。
GASプロジェクトの準備
次に、GoogleドライブでGASプロジェクトを作成します。GASを使うことでSlack Botの作成がより簡単になります。
- Googleドライブを開き、新規作成から「スクリプト」を選択します。
- 新しいGASプロジェクトが開いたら、ファイル名を変更して保存します。
これで、GASでSlack Botを作る準備が整います。
GASでSlack Botを動かす基本スクリプト
準備が整ったら、実際にGASでSlack Botを作るスクリプトを書きます。一番シンプルな方法を紹介します。
メッセージ送信機能
Slack Botで一番基本的な機能はメッセージの送信です。
function postToSlack() {
var url = "https://slack.com/api/chat.postMessage";
var token = "YOUR_SLACK_API_TOKEN";
var slackMessage = {
"token": token,
"channel": "#general",
"text": "こんにちは、Slack Botです!"
};
var options = {
"method": "post",
"payload": slackMessage
};
UrlFetchApp.fetch(url, options);
}
このスクリプトにより、指定したSlackチャンネルにメッセージを送れるようになります。APIトークンは事前に取得したものを使用してください。
GASでSlack Botをさらにカスタマイズ
基本の機能をマスターしたら、Slack Botをもっと活用するアイデアを考えてみましょう。
ユーザーからのメンションに応答する
ユーザーからの入力に応答するSlack Botを作るには、さらに応用する必要があります。
function doPost(e) {
var data = JSON.parse(e.postData.contents);
if (data.event && data.event.type == "app_mention") {
postToSlack("メンションありがとうございます!");
}
}
function postToSlack(message) {
var url = "https://slack.com/api/chat.postMessage";
var token = "YOUR_SLACK_API_TOKEN";
var slackMessage = {
"token": token,
"channel": "#general",
"text": message
};
var options = {
"method": "post",
"payload": slackMessage
};
UrlFetchApp.fetch(url, options);
}
この応答機能で、Slack上でのコミュニケーションをより親しみやすくすることができます。
練習問題:基本スクリプトの応用
Slack Botをさらに進化させましょう。指定したメッセージに対して特定の返事をするようにSlack Botをカスタマイズしてください。
解答・解説
function doPost(e) {
var data = JSON.parse(e.postData.contents);
if (data.event && data.event.type == "app_mention") {
var userMessage = data.event.text.toLowerCase();
var reply;
if (userMessage.includes("hello")) {
reply = "Hello! How can I help you today?";
} else if (userMessage.includes("help")) {
reply = "Sure! What do you need help with?";
} else {
reply = "Sorry, I didn't understand. Can you rephrase?";
}
postToSlack(reply);
}
}
function postToSlack(message) {
var url = "https://slack.com/api/chat.postMessage";
var token = "YOUR_SLACK_API_TOKEN";
var slackMessage = {
"token": token,
"channel": "#general",
"text": message
};
var options = {
"method": "post",
"payload": slackMessage
};
UrlFetchApp.fetch(url, options);
}
このスクリプトは、指定されたメッセージに応じて異なる返事をします。言語やフレーズを柔軟に設定してカスタマイズしてみましょう。