技術ブログ

GASでSlack Botを爆速作成!初心者でも簡単解説

/ 初心者向け

GASでSlack Botを爆速作成!初心者でも簡単解説

GASでSlack Botを爆速作成!初心者でも簡単解説

Slackは、チームのコミュニケーションを円滑にする強力なツールですが、さらにGAS(Google Apps Script)と組み合わせることで、自動化や情報集約が格段に便利になります。本記事では、GASを使ってオリジナルのSlack Botを作成する基本的な手順を、初心者の方でも理解できるように、ステップバイステップで解説していきます。

なぜGASでSlack Botを作るのか?

GASはGoogle Workspace(Gmail、Googleスプレッドシート、Googleカレンダーなど)と連携しやすいJavaScriptベースのスクリプト言語です。特別な環境構築は不要で、ブラウザ上でコードを書いてすぐに実行できます。Slack BotにGASを連携させることで、以下のようなことが可能になります。

  • GoogleスプレッドシートのデータをSlackに通知する
  • Googleフォームの回答をSlackに自動送信する
  • 特定の条件でSlackにリマインダーを送信する
  • Slackからのコマンドに応答してGASの処理を実行する

Slack Botの基本構成要素

Slack Botを作成するには、主に以下の2つの要素が必要です。

1. Slack側の設定: Slackワークスペースに「App」を作成し、Botトークンを取得します。

2. GAS側のコード: Slack APIを呼び出すためのJavaScriptコードを記述します。

ステップ1: Slack Appの作成とトークン取得

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

1. Slack APIサイトにアクセス: https://api.slack.com/ にアクセスし、「Create an app」ボタンをクリックします。

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

3. App名とワークスペースを設定: Appの名前(例: MyGASBot)と、Botを導入するSlackワークスペースを選択し、「Create App」をクリックします。

4. Bot Token Scopesの設定: 左側のメニューから「OAuth & Permissions」を選択します。「Scopes」セクションの「Bot Token Scopes」で、「Add an OAuth Scope」をクリックし、chat:writecommands (コマンドを受け付ける場合)を追加します。

5. Appをワークスペースにインストール: ページ上部に戻り、「Install to Workspace」ボタンをクリックして、Appをワークスペースにインストールします。これにより、Bot Token(xoxb-...で始まる文字列)が発行されます。このトークンは後ほどGASで利用するので、大切に保管しておきましょう。

ステップ2: GASでSlackにメッセージを送信する

次に、GASでSlackにメッセージを送信するコードを記述します。GASエディタを開き、新しいプロジェクトを作成してください。

function postToSlack() {
  const slackToken = 'YOUR_SLACK_BOT_TOKEN'; // ステップ1で取得したBot Tokenに置き換えてください
  const channel = '#general'; // メッセージを送信したいチャンネル名(例: #general)
  const message = 'こんにちは!GASからSlackにメッセージを送信しました!';

  const url = 'https://slack.com/api/chat.postMessage';
  const payload = {
    channel: channel,
    text: message
  };

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

  try {
    UrlFetchApp.fetch(url, options);
    Logger.log('メッセージをSlackに送信しました。');
  } catch (e) {
    Logger.log('Slackへのメッセージ送信に失敗しました: ' + e);
  }
}

コードの説明:

  • YOUR_SLACK_BOT_TOKEN: ステップ1で取得したBot Tokenに置き換えてください。
  • channel: メッセージを送信したいSlackチャンネル名を指定します。
  • message: 送信するメッセージ内容です。
  • UrlFetchApp.fetch(): Slack APIにHTTP POSTリクエストを送信します。

この関数をGASエディタで実行すると、指定したチャンネルにメッセージが投稿されます。

ステップ3: Slackからのコマンドに応答する(Incoming Webhooks / Slash Commands)

Slack Botにコマンド(例: /mycommand)を送信して、GASの処理を実行させたい場合は、Slash Commandsという機能を利用します。この設定は少し複雑になるため、今回は「Incoming Webhooks」という、より簡単な方法でSlackからGASに情報を連携させる例を紹介します。これは、GAS側でURLを生成し、そのURLにPOSTすることでSlackにメッセージを送信する、という逆のパターンです。

Incoming Webhooksの設定

1. Slack Appの設定画面で、左メニューから「Incoming Webhooks」を選択します。

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

3. 「Add New Webhook to Workspace」ボタンをクリックします。

4. メッセージを投稿したいチャンネルを選択し、「Allow」をクリックします。すると、Webhook URL(https://hooks.slack.com/services/...で始まるURL)が生成されます。

GASでのIncoming Webhooks利用

GAS側では、このWebhook URLにPOSTリクエストを送ることで、Slackにメッセージを送信できます。

function sendViaWebhook() {
  const webhookUrl = 'YOUR_INCOMING_WEBHOOK_URL'; // ステップ3で取得したWebhook URLに置き換えてください
  const message = 'Incoming Webhook経由で送信!';

  const payload = {
    text: message
  };

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

  try {
    UrlFetchApp.fetch(webhookUrl, options);
    Logger.log('Webhook経由でSlackにメッセージを送信しました。');
  } catch (e) {
    Logger.log('Webhook経由でのSlackメッセージ送信に失敗しました: ' + e);
  }
}

この関数を実行すると、指定したチャンネルにメッセージが投稿されます。

さらに活用するために

今回ご紹介した内容は、GASでSlack Botを作成する上での基本中の基本です。ここからさらに、以下のような機能を追加していくことができます。

  • Googleスプレッドシートとの連携:GASからスプレッドシートのデータを読み取り、Slackに通知する。
  • Googleカレンダーとの連携:GASからカレンダーの予定を取得し、Slackにリマインダーを送信する。
  • APIの活用:外部API(天気予報、ニュースなど)と連携して、Slackに情報を表示する。
  • インタラクティブ機能:ボタンやメニューを使った、よりリッチなユーザーインターフェースをSlack上に作成する。

GASとSlack Botを組み合わせることで、日々の業務を劇的に効率化できる可能性は無限大です。ぜひ、ご自身の業務に合わせたオリジナルのBotを作成してみてください!

GAS自動化の導入相談

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

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