特定の単語に反応するSlack BotをGASで作る簡単ステップ!

僕、最近GASを勉強してるんだけど、Slackで特定の単語に反応するボットを作る方法がわからなくて…
猫男
猫男
catman
catman
それなら、catmanが特定の単語に反応するSlack Botの作り方を教えてやろう!まずは基本の流れから見ていこう。

特定の単語に反応するSlack Botの基本

特定の単語に反応するSlack Botは、GASとSlackのAPIを利用して構築します。

まず、SlackのAppを作成し、APIトークンを取得するところから始めます。
次に、GASでスクリプトを作成してSlackと連携します。
 

Slack Appを作成する

Slack Appを作成し、APIトークンを取得しておきましょう。

1. SlackのAPIページにアクセスし、新しいAppを作成します。

2. OAuth & Permissions からAPIトークンを発行します。

Slack Appを作成するのは初めてだから少し緊張しちゃうな…
猫男
猫男
catman
catman
大丈夫さ、順を追えばできるようになる。次はGASを使ってスクリプトを作成するぞ。

 

GASでスクリプトを作成する

GASを使ってSlack Botを作成します。まずは、GASエディタを開きます。

GASエディタで以下のスクリプトを例に作成します。


function doPost(e) {
 var slackRequest = JSON.parse(e.postData.contents);
 var text = slackRequest.event.text;

 if (text && text.toLowerCase().indexOf('hello') !== -1) {
 respondToSlack(slackRequest);
 }
}

function respondToSlack(request) {
 var responseText = "こんにちは!いかがお過ごしですか?";

 var payload = {
 token: "<Your-API-Token>",
 channel: request.event.channel,
 text: responseText,
 };

 UrlFetchApp.fetch("https://slack.com/api/chat.postMessage", {
 method: 'post',
 payload: payload
 });
}

このスクリプトでは、特定の単語「hello」に反応してSlackにメッセージを送信します。

 

GASスクリプトの構成

GASのスクリプトには、Slackからのリクエストを受け取る部分と、メッセージを送信する部分があります。

イベントを受け取る

doPost()関数はSlackからのイベントを受け取ります。

特定の単語に反応

text.toLowerCase().indexOf(‘hello’) !== -1 で特定の単語をチェックします。

特定の単語に反応させるための条件分岐がわかったぞ!次はどうすればいいかな?
猫男
猫男
catman
catman
次は、Slackへの応答メッセージを実際に送信する部分だ。ここからがSlack Botらしい動きの本番さ。

 

Slackにメッセージを送信

respondToSlack関数を使ってSlackにメッセージを送信します。

payloadを構築し、UrlFetchApp.fetch()を使って実際にSlackにメッセージを送ります。

まとめ:GASで簡単にSlack Botを作成

  • Slack Appを作成し、APIトークンを取得
  • GASスクリプトでイベントを受け取り、特定の単語を検出する
  • 検出した単語に基づいてSlackにメッセージを送信
これで特定の単語に反応するSlack Botを作れそうだ!早速試してみるよ!
猫男
猫男
catman
catman
その意気だ!実際に手を動かして理解することが大切さ。

 

練習問題

特定の単語「thanks」に反応して、「どういたしまして!」と返答するSlack BotをGASで作成してください。

  

解答・解説


function doPost(e) {
 var slackRequest = JSON.parse(e.postData.contents);
 var text = slackRequest.event.text;

 if (text && text.toLowerCase().indexOf('thanks') !== -1) {
 respondToSlack(slackRequest);
 }
}

function respondToSlack(request) {
 var responseText = "どういたしまして!";

 var payload = {
 token: "<Your-API-Token>",
 channel: request.event.channel,
 text: responseText,
 };

 UrlFetchApp.fetch("https://slack.com/api/chat.postMessage", {
 method: 'post',
 payload: payload
 });
}

このスクリプトでは、Slackからのリクエストを受け取り、そのメッセージに「thanks」が含まれている場合に「どういたしまして!」と応答します。

doPost()関数でSlackからのイベントを受け取り、indexOf()で特定の単語を探します。

respondToSlack()関数では、Slackにメッセージを返すためのpayloadを作成し、UrlFetchApp.fetch()で送信します。

EARTHPG 自動化研究所

「その作業、仕組みにできます。」

Google Apps Script、Python、スプレッドシート自動化、WordPress開発、 API連携、AI活用まで対応。 小さな自動化から業務全体の設計まで、研究所が支援します。