技術ブログ

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

/ 初心者向け

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

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

Slackは、チーム内のコミュニケーションを円滑にする強力なツールですが、さらにGAS(Google Apps Script)と組み合わせることで、その可能性は無限に広がります。本記事では、プログラミング初心者の方でも理解できるよう、GASを使ってSlack Botを作成する基本的な手順から、よくある疑問、そして実践的な応用例までを、ていねいに解説していきます。

1. GASとは?なぜSlack Bot作成に便利なのか

GASは、Google Workspace(Gmail, Google Drive, Google Sheetsなど)の機能を拡張し、自動化するためのJavaScriptベースのプログラミング言語です。ブラウザ上でコードを記述・実行できるため、特別な開発環境の準備は不要です。Slack Bot作成においては、以下の点がGASの強みとなります。

  • 手軽さ: インストール不要で、Googleアカウントがあればすぐに始められます。
  • 連携の容易さ: Googleフォームからのデータ取得、Gmailでの通知など、Googleサービスとの連携が非常に簡単です。
  • 無料: 個人の利用であれば、ほとんどの場合無料で利用できます。
  • リアルタイム実行: トリガーを設定すれば、特定のイベント(時間、フォーム送信など)に応じて自動的にBotを動作させられます。

2. Slack Bot作成の準備

GASでSlack Botを作成するには、まずSlack側での設定が必要です。ここでは、最も基本的な「Incoming Webhook」を使ったメッセージ送信Botを例に説明します。

2.1 Slackアプリの作成とWebhook URLの取得

1. Slackアプリの作成: SlackのAPIサイトにアクセスし、「Create an App」ボタンをクリックします。

2. 「From scratch」を選択: 今回はスクラッチから作成します。

3. アプリ名の設定とワークスペースの選択: 適切なアプリ名(例: GAS-Slack-Bot)と、Botを導入したいワークスペースを選択します。

4. 「Add basic features」から「Incoming Webhooks」を有効化: 左側のメニューから「Incoming Webhooks」を探し、トグルスイッチで「On」にします。

5. 「Add New Webhook to Workspace」をクリック: 新しいWebhookを作成します。

6. 投稿先のチャンネルを選択: Botからのメッセージを送信したいチャンネルを選択し、「Allow」をクリックします。

7. Webhook URLの取得: 画面に表示された Webhook URL をコピーしておきます。このURLは、BotからのメッセージをSlackに送信するための「宛先」のようなものです。

3. GASでSlack Botのコードを書く

準備ができたら、いよいよGASでコードを書いていきます。

1. GASエディタを開く: Googleドライブで新しいスプレッドシートを作成し、「拡張機能」->「Apps Script」を選択すると、GASエディタが開きます。

2. コードの記述: 以下のコードをコピーして、GASエディタに貼り付けます。

function sendSlackMessage() {
  const webhookUrl = 'YOUR_WEBHOOK_URL'; // ここに取得したWebhook URLを貼り付ける
  const message = {
    text: 'こんにちは、GAS Slack Botです! \n Googleフォームからの新しい回答がありました。'
  };

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

  UrlFetchApp.fetch(webhookUrl, options);
}
  • YOUR_WEBHOOK_URL の部分を、先ほどSlackで取得したWebhook URLに必ず置き換えてください。
  • message.text に送信したいメッセージ内容を記述します。\n は改行を表します。

3. 保存: ファイル名を付けて保存します(例: SlackBot)。

4.GASでSlack Botをテスト実行する

コードが書けたら、動作確認です。

1. 関数を選択: GASエディタの上部にある関数選択ドロップダウンから sendSlackMessage を選択します。

2. 実行ボタンをクリック: 再生ボタン(▶)をクリックします。

3. 初回承認: 初めて実行する場合、スクリプトの承認を求められます。「許可を確認」をクリックし、Googleアカウントを選択、「詳細」から「(プロジェクト名)(安全ではないページ)に移動」をクリックし、「許可」をクリックします。

4. Slackを確認: 設定したチャンネルに、GASから送信されたメッセージが表示されているはずです。

5.応用例:Googleフォームの回答をSlackに通知する

GASとSlack Botの連携は、Googleフォームの回答をリアルタイムでSlackに通知するといった、非常に実用的な自動化が可能です。

1. Googleフォームの作成: 通知したい内容を質問項目とするGoogleフォームを作成します。

2. GASエディタを開く: フォームの「回答」タブから、スプレッドシートアイコンをクリックして回答をスプレッドシートに紐付けます。紐付けられたスプレッドシートを開き、「拡張機能」->「Apps Script」でGASエディタを開きます。

3. コードの修正: 以下のコードを参考に、先ほどの sendSlackMessage 関数を修正・追加します。

function sendFormResponseToSlack() {
  const webhookUrl = 'YOUR_WEBHOOK_URL'; // ここに取得したWebhook URLを貼り付ける

  // 現在アクティブなスプレッドシートとシートを取得
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // 最新の回答行を取得 (ヘッダー行を除く)
  const lastRow = sheet.getLastRow();
  const range = sheet.getRange(lastRow, 1, 1, sheet.getLastColumn());
  const values = range.getValues()[0]; // 2次元配列から1次元配列に変換

  // ヘッダー行を取得 (最初の行)
  const headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];

  let messageText = 'Googleフォームに新しい回答がありました!\n\n';
  for (let i = 0; i < headers.length; i++) {
    messageText += `${headers[i]}: ${values[i]}\n`;
  }

  const message = {
    text: messageText
  };

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

  UrlFetchApp.fetch(webhookUrl, options);
}

4. トリガーの設定: GASエディタの左側にある時計アイコン(トリガー)をクリックします。「トリガーを追加」ボタンをクリックし、以下の設定を行います。

  • 実行する関数: sendFormResponseToSlack
  • 実行するデプロイ: Head
  • イベントのソースを選択: スプレッドシートから
  • イベントの種類を選択: 送信時

これで、Googleフォームに新しい回答が送信されるたびに、自動的にSlackに通知が送られるようになります。

6.よくある質問とトラブルシューティング

  • メッセージがSlackに届かない:
  • Webhook URLが間違っていないか再確認してください。
  • GASエディタで UrlFetchApp.fetch の部分にエラーが出ていないか確認してください。
  • SlackアプリのIncoming Webhooks機能が有効になっているか確認してください。
  • エラーメッセージが表示される:
  • GASエディタの実行ログ(「実行」メニューの「前回の実行」)を確認し、エラーの詳細を把握してください。
  • payload の形式がJSONとして正しく整形されているか確認してください。
  • もっとリッチなメッセージを送りたい:
  • Slackの Block Kit を利用することで、ボタンや画像、セクションなどを組み合わせたリッチなメッセージを作成できます。GASからもJSON形式で送信できます。

まとめ

GASを使えば、誰でも簡単に、そして低コストで高機能なSlack Botを作成できます。今回ご紹介した Incoming Webhook を使ったメッセージ送信や、Googleフォームとの連携は、日々の業務効率を大幅に向上させる第一歩となるでしょう。ぜひ、あなただけのオリジナルSlack Botを作成し、チームのコミュニケーションをさらに活性化させてください!

GAS自動化の導入相談

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

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