初心者向け!Google Apps Scriptで簡単にSlackボットを作る方法

Slackで社内の雑務をもっと効率的にしたいな…。でも僕、GASとかSlack Botの作り方が全然わからなくて…。どうすればいいんだろう。
猫男
猫男
catman
catman
心配しなくていいさ。catmanがGASを使って簡単にSlack Botを作る方法を教えてあげよう。

準備:SlackとGASをつなぐための基礎

まずはSlackとGASをつなぐ準備から始めます。最初のステップはSlackのワークスペースで新しいアプリを作成することです。

Slack APIトークン取得

Slackでのアプリ作成は以下の手順を参考にしてください。

  1. Slack APIのページに行き、「Create New App」ボタンをクリックします。
  2. 必要な情報を入力してアプリを作成します。
  3. 「OAuth & Permissions」からトークンを取得します。これは後でGASからSlack Botを使うために必要です。

このトークンがあれば、GASからSlackのチャンネルにメッセージを送れます。

GASプロジェクトの準備

次に、GoogleドライブでGASプロジェクトを作成します。GASを使うことでSlack Botの作成がより簡単になります。

  1. Googleドライブを開き、新規作成から「スクリプト」を選択します。
  2. 新しい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);
}

このスクリプトは、指定されたメッセージに応じて異なる返事をします。言語やフレーズを柔軟に設定してカスタマイズしてみましょう。

すごいですね!こんなに簡単にSlack Botをカスタマイズできるなんて思いませんでした。
猫男
猫男
catman
catman
やってみれば簡単だろう?GASでSlack Botが活躍することを願ってるよ。

EARTHPG 自動化研究所

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

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