技術ブログ

GASでSlack Bot作成!初心者でも簡単ステップ解説

/ 初心者向け

GASでSlack Bot作成!初心者でも簡単ステップ解説

GASでSlack Bot作成!初心者でも簡単ステップ解説

こんにちは!GAS専門ブロガーの〇〇です。

今回は、Google Apps Script (GAS) を使って、Slackに自動応答するBotを簡単に作成する方法を解説します。プログラミング初心者の方でも、この記事を読めばすぐに自分だけのSlack Botが作れるようになりますよ!

なぜGASでSlack Bot?

Slack Botを作成する方法はいくつかありますが、GASを使うメリットは以下の通りです。

  • 無料ではじめられる: Googleアカウントがあればすぐに利用できます。
  • JavaScriptベース: Web開発でよく使われるJavaScriptに似た文法なので、学習コストが比較的低いです。
  • Googleサービスとの連携: Googleカレンダーやスプレッドシートなど、他のGoogleサービスと連携させやすいです。
  • サーバー不要: GASはGoogleのサーバー上で実行されるため、自分でサーバーを用意する必要がありません。

準備するもの

  • Googleアカウント
  • Slackワークスペース

ステップ1:Slack Appの作成

まずは、Slack側でBotの「App」を作成します。

1. Slack App Directoryにアクセス: https://api.slack.com/apps にアクセスし、「Create New App」ボタンをクリックします。

2. 「From scratch」を選択: 「Create an App」画面で、「From scratch」を選択します。

3. App NameとWorkspaceを選択: Appの名前(例: MyGASBot)と、作成するワークスペースを選択し、「Create App」ボタンをクリックします。

4. 「OAuth & Permissions」の設定: 左側のメニューから「OAuth & Permissions」を選択します。

5. 「Scopes」の追加: 「Scopes」セクションまでスクロールし、「Bot Token Scopes」の「Add an OAuth Scope」ボタンをクリックします。

  • chat:write: Botがチャンネルにメッセージを投稿できるようにします。
  • channels:read: Botがチャンネルの情報を読み取れるようにします。(必要に応じて)
  • users:read: Botがユーザー情報を読み取れるようにします。(必要に応じて)

6. 「Install to Workspace」: ページ上部に戻り、「Install to Workspace」ボタンをクリックし、権限を付与します。

7. 「Bot User OAuth Token」の取得: インストールが完了すると、「OAuth & Permissions」ページに「Bot User OAuth Token」が表示されます。このトークンは後でGASからSlackにアクセスするために必要なので、コピーしておきましょう。

ステップ2:GASプロジェクトの作成とコード記述

次に、GASでBotのロジックを作成します。

1. GASプロジェクトの作成: Googleドライブを開き、「新規」→「その他」→「Google Apps Script」を選択して、新しいスクリプトファイルを作成します。

2. プロジェクト名の変更: プロジェクトエディタが開いたら、左上の「無題のプロジェクト」をクリックして、分かりやすい名前に変更します(例: SlackGASBot)。

3. コードの記述: 以下のコードをエディタに貼り付けます。

function doPost(e) {
  // Slackから送信されたイベントのタイプを取得
  var eventType = e.parameter.type;

  // コマンドが「hello」の場合の応答
  if (eventType === 'url_verification') {
    // SlackからのURL検証リクエストへの応答
    return ContentService.createTextOutput(e.parameter.challenge);
  } else if (e.parameter.event && e.parameter.event.type === 'message') {
    var message = e.parameter.event.text;
    var channelId = e.parameter.event.channel;
    var userId = e.parameter.event.user;

    Logger.log('Received message: ' + message + ' from user: ' + userId + ' in channel: ' + channelId);

    // Bot自身からのメッセージは無視する
    if (e.parameter.event.subtype === 'bot_message') {
      return;
    }

    // 「こんにちは」と返信
    if (message.includes('こんにちは')) {
      var responseText = 'こんにちは!GAS Botです。何かお手伝いできることはありますか?';
      slackPostMessage(channelId, responseText);
    }
  }
}

function slackPostMessage(channel, text) {
  var slackToken = 'YOUR_SLACK_BOT_TOKEN'; // ここに取得したBot User OAuth Tokenを入力
  var apiUrl = 'https://slack.com/api/chat.postMessage';

  var options = {
    'method' : 'post',
    'contentType': 'application/json',
    'headers': {
      'Authorization': 'Bearer ' + slackToken
    },
    'payload' : JSON.stringify({
      'channel': channel,
      'text': text
    })
  };

  UrlFetchApp.fetch(apiUrl, options);
}

コードの説明:

  • doPost(e): SlackからWebHookでデータが送られてきた際に実行される関数です。eには送信されたデータが含まれます。
  • e.parameter.type === 'url_verification': SlackがWebHook URLの検証を行う際に送信してくるリクエストです。challengeの値をそのまま返します。
  • e.parameter.event.type === 'message': メッセージが送信されたイベントです。
  • e.parameter.event.text: メッセージの内容です。
  • e.parameter.event.channel: メッセージが送信されたチャンネルIDです。
  • slackPostMessage(channel, text): Slack APIを呼び出してメッセージを投稿する関数です。
  • YOUR_SLACK_BOT_TOKEN: ここに、ステップ1で取得した「Bot User OAuth Token」を貼り付けてください。

4. スクリプトの保存: 保存ボタン(フロッピーディスクのアイコン)をクリックして、スクリプトを保存します。

ステップ3:GASのデプロイとSlackへの登録

作成したGASをSlackから呼び出せるように設定します。

1. 「デプロイ」→「新しいデプロイ」: プロジェクトエディタの上部にある「デプロイ」ボタンをクリックし、「新規デプロイ」を選択します。

2. 「ウェブアプリ」を選択: 「Add New Deployment」画面で、歯車アイコンの「Add type」をクリックし、「ウェブアプリ」を選択します。

3. 「実行するユーザー」と「アプリへのアクセス権」の設定:

  • 「実行するユーザー」は「私」を選択します。
  • 「アプリへのアクセス権」は「全員」を選択します。(セキュリティ上の理由で「特定の人」に限定することも可能ですが、今回は「全員」で構いません。)

4. 「デプロイ」ボタンをクリック: 「デプロイ」ボタンをクリックします。

5. 「承認が必要です」の表示: 初めてデプロイする場合、「承認が必要です」という画面が表示されます。クリックして、Googleアカウントへのアクセス権限を承認します。

6. 「ウェブアプリURL」の取得: デプロイが完了すると、「ウェブアプリURL」が表示されます。このURLをコピーしておきましょう。

7. Slack Appに戻る: ステップ1で作成したSlack Appの設定画面に戻ります。

8. 「Interactivity & Shortcuts」または「Event Subscriptions」の設定:

  • 「Event Subscriptions」を選択: 左側のメニューから「Event Subscriptions」を選択します。
  • 「Request URL」にGASのURLを貼り付け: 「Event Subscriptions」を「On」にし、「Request URL」に、先ほどコピーしたGASの「ウェブアプリURL」を貼り付けます。
  • 「Subscribe to bot events」でイベントを追加: 「Bot User Events」の「Add Bot User Event」をクリックし、「message.channels」を選択します。これで、チャンネルにメッセージが投稿された際にGASに通知されるようになります。
  • 「Save Changes」をクリック。

補足: もし、Slash Command (/helloのようなコマンド) を使いたい場合は、「Interactivity & Shortcuts」または「Slash Commands」の設定も必要になりますが、今回はメッセージへの自動応答に絞って説明しました。

ステップ4:動作確認

いよいよBotの動作確認です!

1. Slackチャンネルで「こんにちは」と入力: Botを招待したいチャンネルで、こんにちは と入力してメッセージを送信してみてください。

2. Botからの応答を確認: しばらくすると、GAS Botから「こんにちは!GAS Botです。何かお手伝いできることはありますか?」というメッセージが返ってくれば成功です!

まとめ

今回は、GASを使って簡単なSlack Botを作成する方法を解説しました。WebHookの設定やGASのデプロイなど、少し手順が多く感じられたかもしれませんが、一つ一つ進めれば決して難しくありません。

このBotをベースに、さらに機能を追加していくことで、より便利なSlack Botを作ることができます。例えば、

  • 特定のキーワードに反応させて、詳細な情報を返す
  • Googleカレンダーの予定を通知する
  • スプレッドシートのデータを参照して、Slackに表示する

など、アイデア次第で無限に拡張可能です!

ぜひ、この機会にGASとSlack Botの世界を楽しんでみてください!

それでは、また次回のブログでお会いしましょう!

GAS自動化の導入相談

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

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