技術ブログ

GASでSlack Botを自作!初心者でも簡単解説

/ 初心者向け

GASでSlack Botを自作!初心者でも簡単解説

GASでSlack Botを自作!初心者でも簡単解説

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

今回は、Google Apps Script(GAS)を使って、皆さんのワークフローを便利にするオリジナルのSlack Botを作成する方法を、初心者の方にも分かりやすく解説していきます。

Slack Botがあれば、定型的な通知を自動化したり、社内ツールとの連携をスムーズにしたりと、日々の業務効率を格段に向上させることができます。GASを使えば、特別な開発環境を用意することなく、ブラウザ上で手軽にBotを開発できるのが魅力です。

1. Slack Botの準備

まずは、Slack側でBotを作成し、必要な情報を取得します。

1. Slackアプリの作成: Slackのワークスペースで「Custom Integrations」にアクセスし、「Apps」から「Build your own app」を選択します。新しいアプリを作成し、App NameとDevelopment Slack Workspaceをそれぞれ設定します。

2. Bot Tokenの取得: 作成したアプリの設定画面で、「OAuth & Permissions」に進み、「Scopes」セクションで必要な権限(例: chat:write)を追加します。「Install App」をクリックし、インストールを承認すると、「Bot User OAuth Token」が発行されます。このトークンは後ほどGASからSlackにアクセスするために必要なので、安全な場所にメモしておきましょう。

2. GASプロジェクトの作成と設定

次に、GASプロジェクトを作成し、Slack APIを利用するための設定を行います。

1. GASプロジェクトの作成: Googleドライブを開き、「新規」>「その他」>「Google Apps Script」を選択して、新しいスクリプトエディタを開きます。プロジェクトに分かりやすい名前を付けましょう(例: 「Slack通知Bot」)。

2. Slack APIライブラリの利用(推奨): GASには、外部APIとの連携を容易にするためのライブラリが用意されています。今回はSlack APIを利用するため、UrlFetchApp を直接使うこともできますが、より簡潔に記述するために、コミュニティで開発されているSlack API用のライブラリを利用することも検討してみてください。今回は最も基本的な UrlFetchApp を使った例で説明します。

3. GASでのSlack Tokenの設定: 取得したBot Tokenは、スクリプトに直接埋め込むのはセキュリティ上良くありません。GASの「スクリプトのプロパティ」機能を使って、安全に管理しましょう。

  • スクリプトエディタの「プロジェクトの設定」(歯車アイコン)を開き、「スクリプトのプロパティ」タブを選択します。
  • 「プロパティを追加」ボタンをクリックし、プロパティ名に SLACK_BOT_TOKEN、値に取得したBot Tokenを入力します。
  • 「保存」をクリックします。

3. Slackにメッセージを送信するGASコード

いよいよ、Slackにメッセージを送信するGASコードを書いていきます。

function sendSlackMessage() {
  // スクリプトのプロパティからSlack Bot Tokenを取得
  const slackBotToken = PropertiesService.getScriptProperties().getProperty('SLACK_BOT_TOKEN');
  // メッセージを送信したいチャンネルID
  const channelId = 'YOUR_CHANNEL_ID'; // 例: C1234567890
  // 送信するメッセージ
  const message = '【GAS Bot】こんにちは!GASからSlackにメッセージを送信しました!';

  if (!slackBotToken) {
    Logger.log('Slack Bot Tokenが設定されていません。');
    return;
  }

  // Slack APIのエンドポイント
  const url = 'https://slack.com/api/chat.postMessage';

  // リクエストヘッダー
  const headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ' + slackBotToken
  };

  // リクエストボディ
  const payload = {
    'channel': channelId,
    'text': message
  };

  // UrlFetchApp を使ってSlack APIにPOSTリクエストを送信
  try {
    const response = UrlFetchApp.fetch(url, {
      method: 'post',
      headers: headers,
      payload: JSON.stringify(payload)
    });
    const responseCode = response.getResponseCode();
    const responseBody = response.getContentText();

    if (responseCode === 200) {
      Logger.log('メッセージの送信に成功しました: ' + responseBody);
    } else {
      Logger.log('メッセージの送信に失敗しました。レスポンスコード: ' + responseCode + ', レスポンスボディ: ' + responseBody);
    }
  } catch (e) {
    Logger.log('エラーが発生しました: ' + e);
  }
}

コードの解説:

  • PropertiesService.getScriptProperties().getProperty('SLACK_BOT_TOKEN') で、スクリプトのプロパティに保存したBot Tokenを取得しています。
  • channelId には、メッセージを送信したいSlackチャンネルのIDを指定します。チャンネルIDは、Slackのチャンネルを開いたときのURL(例: https://app.slack.com/client/T0123456789/C1234567890)の末尾にある C1234567890 の部分です。
  • message には、送信したいメッセージ内容を記述します。
  • UrlFetchApp.fetch() を使って、Slack APIの chat.postMessage エンドポイントにPOSTリクエストを送信しています。ヘッダーには認証情報(Bot Token)を含め、ボディには送信先チャンネルとメッセージ内容をJSON形式で渡します。

4. GASスクリプトの実行とテスト

コードが完成したら、実際に実行してテストしてみましょう。

1. 関数の選択: スクリプトエディタの上部にある関数選択ドロップダウンで sendSlackMessage を選択します。

2. 実行: 「実行」ボタン(▶︎アイコン)をクリックします。

3. 承認: 初めて実行する際には、スクリプトがGoogleサービス(Apps Script Dashboard)や外部サービス(Slack API)にアクセスするための権限を求めるダイアログが表示されます。「許可を確認」をクリックし、表示される権限を確認して「許可」をクリックします。

Slackワークスペースを確認し、指定したチャンネルにメッセージが届いているか確認してください。もしエラーが出た場合は、Logger.logに出力されるメッセージを確認して、原因を特定しましょう。

5. より高度な機能へ(発展)

今回の例では基本的なメッセージ送信機能のみを実装しましたが、GASとSlack APIを組み合わせることで、さらに様々な機能を持つBotを作成できます。

  • イベントへの応答: Slackからのイベント(メッセージ受信、リアクションなど)を受け取って、それに応じた処理を実行する。
  • リマインダー機能: 特定のタイミングで自動的にメッセージを送信する。
  • 外部データとの連携: Googleスプレッドシートや他のWebサービスからデータを取得し、Slackに通知する。
  • インタラクティブなUI: ボタンやドロップダウンメニュー付きのメッセージを送信し、ユーザーからの入力を受け付ける。

これらの機能を実現するには、Slack APIのドキュメントを参考に、GASからHTTPリクエストを送信したり、WebアプリケーションとしてGASをデプロイしたりする必要があります。

まとめ

いかがでしたでしょうか?GASを使えば、プログラミングの経験が浅い方でも、比較的簡単にオリジナルのSlack Botを作成できることがお分かりいただけたかと思います。

今回紹介した基本的なメッセージ送信機能から始め、ぜひ色々なアイデアを形にしてみてください。

次回は、Slackからのイベントを受け取って応答する、よりインタラクティブなBotの作成方法について解説する予定です。お楽しみに!

GAS自動化の導入相談

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

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