技術ブログ

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

/ 初心者向け

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

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

GAS(Google Apps Script)は、Google Workspaceの各種サービスを連携させたり、自動化したりできるJavaScriptベースのスクリプト言語です。今回は、このGASを使って、手軽にSlack Botを作成する方法を初心者の方にも分かりやすく解説します。

1. Slack Appの作成と設定

まず、Slack側でBotの「顔」となるAppを作成し、必要な情報を取得します。

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

2. Appの名前とワークスペースを選択: Appの名前を適当につけ(例: GAS Bot Example)、Botを連携させたいSlackワークスペースを選択します。

3. Bot Tokenの取得: 左側のメニューから「OAuth & Permissions」を選択し、「Scopes」セクションで「Bot Token Scopes」に chat:write を追加します。その後、「OAuth Tokens for Your Workspace」セクションにある「Install to Workspace」をクリックし、表示される「Bot User OAuth Token」をコピーしておきます。このトークンがGASからSlackへメッセージを送る際に必要になります。

4. Incoming Webhooksの設定: 左側のメニューから「Incoming Webhooks」を選択し、「Activate Incoming Webhooks」をオンにします。「Add New Webhook to Workspace」をクリックし、メッセージを投稿したいチャンネルを選択して「Allow」をクリックします。表示される「Webhook URL」もコピーしておきましょう。こちらは、GASから特定のチャンネルにメッセージを投稿する際に使用します。

2. GASプロジェクトの作成とコード記述

次に、GASでSlack Botの動作を記述します。

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

2. スクリプトエディタの開き方: プロジェクト名(例: Slack Bot Script)を付け、スクリプトエディタが表示されたら、Code.gs というファイルに以下のコードを記述します。

2.1. Webhook URLを使ったメッセージ送信

Webhook URLを使ってSlackにメッセージを送信する最も簡単な方法です。

function sendMessageToSlack() {
  var webhookUrl = 'ここにコピーしたWebhook URLを貼り付け'; // ★ 取得したWebhook URL
  var message = {
    'text': 'GASからこんにちは!👋'
  };

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

  UrlFetchApp.fetch(webhookUrl, options);
  Logger.log('Slackにメッセージを送信しました。');
}

2.2. Bot Tokenを使ったメッセージ送信(より高機能)

Bot Tokenを使うと、より高度なAPI連携が可能になります。今回は、Bot Tokenを使ってダイレクトメッセージ(DM)を送る例を挙げます。

function sendDirectMessage() {
  var botToken = 'ここにコピーしたBot User OAuth Tokenを貼り付け'; // ★ 取得したBot Token
  var userId = 'ここにメッセージを送りたいユーザーのIDを貼り付け'; // ★ ユーザーID(例: U0123456789ABC)

  var url = 'https://slack.com/api/chat.postMessage';
  var message = {
    'channel': userId,
    'text': 'GAS BotからのDMです。何かお手伝いできることはありますか?'
  };

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

  var response = UrlFetchApp.fetch(url, options);
  Logger.log('Slack DM送信結果: ' + response.getContentText());
}

補足: ユーザーIDは、Slackのプロフィール画面のURLや、@ユーザー名 と入力した際に表示されるIDなどで確認できます。

3. GASの実行とトリガー設定

作成したGASを動かしてみましょう。

1. 実行: スクリプトエディタの上部にある関数選択ドロップダウンで sendMessageToSlack または sendDirectMessage を選択し、▶️(実行)ボタンをクリックします。初回実行時には、スクリプトに権限を付与するための承認画面が表示されるので、内容を確認して許可してください。

2. トリガー設定: 定期的にメッセージを送信したり、特定のイベント(例: Googleフォームの回答があった時)に反応させたい場合は、トリガーを設定します。

  • スクリプトエディタの左側にある時計アイコン(トリガー)をクリックします。
  • 「トリガーを追加」ボタンをクリックします。
  • 実行する関数、実行するデプロイ、イベントの種類(時間主導型、フォーム送信時など)を選択し、保存します。

4. まとめ

GASを使えば、複雑なAPI連携やサーバー構築なしに、手軽にSlack Botを作成できます。今回ご紹介したWebhook URLやBot Tokenを使ったメッセージ送信は、Slack Botの基本機能です。これを応用すれば、Googleフォームからの通知、スプレッドシートの更新通知、特定条件でのリマインダー送信など、様々な自動化を実現できます。ぜひ、GASであなただけの便利なSlack Botを作成してみてください!

さらに学びたい方へ:

GAS自動化の導入相談

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

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