技術ブログ

GASでSlack Botを開発!基礎から応用まで徹底解説

/ 初心者向け

GASでSlack Botを開発!基礎から応用まで徹底解説

GASでSlack Botを開発!基礎から応用まで徹底解説

皆さん、こんにちは!GAS専門ブロガーの[あなたの名前]です。

今回は、Google Apps Script (GAS) を使って、手軽にオリジナルのSlack Botを作成する方法について、初心者の方でも理解できるように、基礎から応用まで詳しく解説していきます。

なぜGASでSlack Botなのか?

Slack Botは、チームのコミュニケーションを円滑にし、定型業務の自動化に役立つ強力なツールです。しかし、専門的なプログラミング知識がないと、開発はハードルが高いと感じるかもしれません。そこで登場するのがGoogle Apps Script (GAS) です。

GASは、Google Workspace (旧 G Suite) の一部として提供されるJavaScriptベースのスクリプト言語です。特別な環境構築は不要で、ブラウザ上でコードを書いてすぐに実行できるため、プログラミング初心者でも気軽に始められます。Slackとの連携も容易で、GASを使って業務効率化を図るSlack Botを開発することは、非常に現実的な選択肢なのです。

Slack Botの基本構成要素

Slack Botを開発する上で、最低限理解しておきたい要素がいくつかあります。

  • Slack API: Slackの機能にプログラムからアクセスするためのインターフェースです。
  • Incoming Webhook: Slackチャンネルにメッセージを送信するためのシンプルな機能です。
  • Slash Commands: Slack上で /コマンド の形式で実行できるカスタムコマンドです。
  • Bots: SlackのAPIを使って、双方向のやり取りが可能なボットです。

今回は、最も手軽に始められる Incoming Webhook を使ったメッセージ送信から、少し踏み込んで Slash Commands の作成までをGASで実装する方法をご紹介します。

1. Incoming Webhookを使ったメッセージ送信

まずは、GASからSlackチャンネルにメッセージを送信する方法を学びましょう。これは、GASのスクリプトがトリガーされた際に、Slackに通知を送る、といった用途に便利です。

1.1. SlackでIncoming Webhook URLを取得する

1. Slackのワークスペースにログインし、https://api.slack.com/apps にアクセスします。

2. 「Create an App」ボタンをクリックし、「From scratch」を選択します。

3. アプリ名と、連携するワークスペースを選択して作成します。

4. 作成したアプリのページで、左側のメニューから「Incoming Webhooks」を選択します。

5. 「Activate Incoming Webhooks」をオンにします。

6. 「Add New Webhook to Workspace」ボタンをクリックし、メッセージを送信したいチャンネルを選択して「Allow」をクリックします。

7. 表示されたWebhook URLをコピーしておきましょう。このURLが、GASからSlackにメッセージを送るための「宛先」となります。

1.2. GASでメッセージを送信するコード

次に、GASエディタを開き、以下のコードを記述します。

function sendSlackMessage() {
  const webhookUrl = 'ここにSlackで取得したWebhook URLを貼り付け';
  const message = {
    text: 'GASからこんにちは!これはテストメッセージです。'
  };

  const options = {
    method: 'post',
    contentType: 'application/json',
    payload: JSON.stringify(message)
  };

  UrlFetchApp.fetch(webhookUrl, options);
}

コードの説明:

  • webhookUrl: 先ほどSlackで取得したWebhook URLをここに貼り付けます。
  • message: 送信するメッセージの内容をJSON形式で定義します。text プロパティにメッセージ本文を指定します。
  • options: HTTP POSTリクエストの詳細を設定します。method は 'post'、contentType は 'application/json'、payloadmessage オブジェクトを JSON.stringify() で文字列化したものになります。
  • UrlFetchApp.fetch(): GASの機能を使って、指定したURLにHTTPリクエストを送信します。

このスクリプトを保存し、実行すると、指定したSlackチャンネルにメッセージが送信されます。

2. Slash CommandsでインタラクティブなBotを作成する

Incoming Webhookは一方的なメッセージ送信に便利ですが、ユーザーからの入力を受け付けて応答するBotを作成するには、Slash Commandsが適しています。

2.1. SlackでSlash Commandを設定する

1. 先ほど作成したSlackアプリのページに戻ります。

2. 左側のメニューから「Slash Commands」を選択します。

3. 「Create New Command」ボタンをクリックします。

4. 以下の項目を入力します。

  • Command: ユーザーがSlackで入力するコマンド名(例: /hello
  • Request URL: ここに、GASで作成するWebhook URLを入力します。後ほど説明します。
  • Short Description: コマンドの説明
  • Usage Hint: コマンドの使い方(任意)

5. 「Save」ボタンをクリックします。

2.2. GASでSlash Commandのリクエストを受け取る

Slash Commandsが実行されると、Slackは指定した「Request URL」にPOSTリクエストを送信します。GASでは、このリクエストを受け取るための「Webhook URL」を作成する必要があります。

1. GASエディタで新しいスクリプトを作成します。以下のコードを記述します。

function doPost(e) {
  const command = e.parameter.command;
  const text = e.parameter.text;
  const channelId = e.parameter.channel_id;

  let responseMessage = '';

  if (command === '/hello') {
    if (text === 'world') {
      responseMessage = 'Hello, world!GASからの応答です。';
    } else {
      responseMessage = '「/hello world」と入力してください。';
    }
  } else {
    responseMessage = '未知のコマンドです。';
  }

  const payload = {
    channel: channelId,
    text: responseMessage
  };

  return ContentService.createTextOutput(JSON.stringify(payload)).setMimeType(ContentService.MimeType.JSON);
}

コードの説明:

  • doPost(e): GASがPOSTリクエストを受け取った際に自動的に実行される関数です。e オブジェクトには、リクエストで送信されたパラメータが含まれます。
  • e.parameter.command: 実行されたコマンド名(例: /hello
  • e.parameter.text: コマンドに続くテキスト(例: world
  • e.parameter.channel_id: コマンドが実行されたチャンネルのID
  • Slackへの応答は、JSON形式で返却する必要があります。ContentService.createTextOutput() を使ってJSON文字列を作成し、setMimeType(ContentService.MimeType.JSON) でMIMEタイプを指定します。

2.3. GASのWebhook URLを取得してSlackに設定する

1. GASエディタで、「デプロイ」>「新しいデプロイ」を選択します。

2. 「アドオン」の横にある歯車アイコンをクリックし、「ウェブアプリ」を選択します。

3. 「実行するユーザー」を「自分」に、「アクセス権限」を「全員」(または必要に応じて制限)に設定します。

4. 「デプロイ」ボタンをクリックします。初回は、承認が必要になる場合がありますので、画面の指示に従って承認してください。

5. デプロイが完了すると、ウェブアプリURL が表示されます。このURLをコピーしてください。

6. Slackアプリの「Slash Commands」設定画面に戻り、先ほど設定したコマンドの「Request URL」に、このGASのウェブアプリURLを貼り付けて保存します。

これで、Slackで /hello world と入力すると、GASから「Hello, world!GASからの応答です。」というメッセージが返ってくるようになります!

まとめ

今回は、GASを使ってSlack Botを作成する基本的な方法として、Incoming Webhookによるメッセージ送信と、Slash Commandsによるインタラクティブな応答の実装方法をご紹介しました。

GASを使えば、特別な準備なく、JavaScriptの知識を活かして様々なSlack Botを開発できます。例えば、Googleカレンダーの予定をSlackに通知したり、Googleフォームの回答をSlackに連携させたりと、業務効率化の可能性は無限大です。

ぜひ、今回学んだことを活かして、あなただけの便利なSlack Botを作成してみてください!

次回は、さらに高度なSlack APIの活用方法や、GASとの連携による複雑なBot開発について解説していく予定です。お楽しみに!

GAS自動化の導入相談

請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。

請求書自動生成ツールを見る / SNS自動投稿ツールを見る