技術ブログ

GASでSlack Botを爆速作成!基本から応用まで徹底解説

/ 初心者向け

GASでSlack Botを爆速作成!基本から応用まで徹底解説

GASでSlack Botを爆速作成!基本から応用まで徹底解説

「Slackの通知を自動化したい」「特定のコマンドに応答するBotが欲しい」

そんな時、GAS(Google Apps Script)を使えば、プログラミング初心者でも手軽にSlack Botを作成できます。GASはGoogle Workspaceのサービスと連携しやすく、特別な環境構築も不要なのが魅力です。

この記事では、GASでSlack Botを作成する基本的な流れから、ちょっとした応用までを、具体的なコード例を交えながら分かりやすく解説します。ぜひ、あなただけの便利なSlack Botを作ってみましょう!

1. Slack Botの準備

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

1. Slackワークスペースにログイン

2. 「App Directory」から「Build」を選択

3. 「Create an app」をクリック

4. 「From scratch」を選択

5. アプリ名とワークスペースを入力

6. 「Create App」をクリック

アプリ作成後、「Features」メニューから以下の設定を行います。

  • OAuth & Permissions: 「Scopes」の「Bot Token Scopes」で chat:write を追加します。これにより、Botがメッセージを送信できるようになります。
  • Install App: 「Install to Workspace」をクリックし、Botをワークスペースにインストールします。インストール後、「Bot User OAuth Token」が表示されるので、これをコピーしておきましょう。このトークンはGASからSlack APIにアクセスする際に必要になります。

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

次に、GASプロジェクトを作成し、Slack APIを呼び出すための準備をします。

1. Google スプレッドシートを開く

2. 「拡張機能」>「Apps Script」を選択

3. スクリプトエディタが開いたら、function.gs (または任意のファイル名) に以下のコードを記述します。

function sendSlackMessage() {
  // Slack APIに送信するメッセージとチャンネルを設定
  var message = {
    "text": "こんにちは!GASから送信されたメッセージです。",
    "channel": "#general" // メッセージを送信したいチャンネルIDを指定
  };

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

  // Slack APIへPOSTリクエストを送信するためのオプション
  var options = {
    "method": "post",
    "contentType": "application/json",
    "headers": {
      "Authorization": "Bearer YOUR_SLACK_BOT_TOKEN"
    },
    "payload": JSON.stringify(message)
  };

  // Slack APIを呼び出す
  UrlFetchApp.fetch(url, options);

  Logger.log("Slackメッセージを送信しました。");
}

コードの説明:

  • message: 送信するメッセージの内容と、送信先のチャンネルを指定します。channel には、#general のようにチャンネル名(ID)を指定してください。
  • url: Slack APIの chat.postMessage エンドポイントを指定しています。これはメッセージを送信するためのAPIです。
  • options: POSTリクエストに必要な情報を設定します。
  • method: "post" でPOSTメソッドを指定。
  • contentType: "application/json" でJSON形式で送信することを指定。
  • headers: "Authorization" ヘッダーに、先ほど取得した「Bot User OAuth Token」を Bearer YOUR_SLACK_BOT_TOKEN の形式で設定します。
  • payload: 送信するメッセージの内容をJSON形式で指定します。JavaScriptオブジェクトを JSON.stringify() で文字列に変換します。
  • UrlFetchApp.fetch(url, options): GASの機能を使って、指定したURLにオプションを指定してHTTPリクエストを送信します。

【重要】 YOUR_SLACK_BOT_TOKEN は、必ずご自身のSlack Bot User OAuth Tokenに置き換えてください。

3. GASからSlack Botを動かす

GASプロジェクトが準備できたら、実際に動かしてみましょう。

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

2. 実行したい関数(例: sendSlackMessage)を選択し、実行ボタン(▶︎アイコン)をクリックします。

3. 初回実行時には、スクリプトに権限の付与を求められます。「承認」をクリックし、指示に従って権限を付与してください。

これで、指定したSlackチャンネルにBotからのメッセージが送信されるはずです!

4. トリガーを使って自動化する

GASの強力な機能の一つに「トリガー」があります。これにより、特定の時間やイベントに基づいてGASを自動実行できます。

例えば、「毎日朝9時に今日のタスクリストをSlackに送信する」といったことも可能です。

1. スクリプトエディタの左側にある時計のアイコン(トリガー)をクリックします。

2. 右下にある「トリガーを追加」ボタンをクリックします。

3. 以下の設定を行います。

  • 実行する関数を選択: sendSlackMessage など、実行したい関数を選びます。
  • 実行するデプロイを選択: 「ヘッド」を選択します。
  • イベントのソースを選択: 「時間主導型」を選択します。
  • 時間の間隔を選択: 「特定の日時タイマー」を選択し、実行したい曜日と時間(例: 毎週、月曜日、午前9時)を設定します。

4. 「保存」をクリックします。

これで、設定した時間に自動でSlackメッセージが送信されるようになります。

5. 応用例:Incoming Webhooks でSlackに情報を投稿

GASからSlack APIを直接叩く方法以外にも、Incoming Webhooks という機能を使うと、より手軽にSlackに情報を投稿できます。

Incoming Webhooks を使うと、特定のURLにHTTP POSTリクエストを送るだけで、指定したチャンネルにメッセージを投稿できます。

準備:

1. Slackアプリの設定画面に戻ります。

2. 「Features」>「Incoming Webhooks」を選択します。

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

4. 「Add New Webhook to Workspace」をクリックします。

5. メッセージを投稿したいチャンネルを選択し、「Allow」をクリックします。

すると、Webhooks URLが生成されます。このURLをコピーしておきましょう。

GASコード例:

function sendSlackMessageViaWebhook() {
  var webhookUrl = "YOUR_INCOMING_WEBHOOK_URL"; // ここにご自身のWebhook URLを設定

  var message = {
    "text": "Incoming Webhook経由で送信されたメッセージです!",
    "username": "GAS Bot", // Botの名前を設定
    "icon_emoji": ":rocket:" // Botのアイコンを設定(絵文字)
  };

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

  UrlFetchApp.fetch(webhookUrl, options);
  Logger.log("Webhook経由でSlackメッセージを送信しました。");
}

YOUR_INCOMING_WEBHOOK_URL は、先ほど取得したWebhook URLに置き換えてください。この関数を実行すれば、Webhook経由でSlackにメッセージが投稿されます。Incoming Webhooks は、Bot Tokenの管理が不要で、POSTリクエストだけで済むため、非常に手軽です。

まとめ

GASを使えば、Googleのサービスとの連携はもちろん、Slack Botの作成も容易であることがお分かりいただけたかと思います。今回ご紹介した基本的なメッセージ送信から、トリガーによる自動化、Incoming Webhooks の活用まで、様々な方法でSlack Botをカスタマイズできます。

この入門編を参考に、ぜひあなたの業務効率化やチームのコミュニケーション活性化に役立つSlack Botを作成してみてください!

GAS自動化の導入相談

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

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