技術ブログ

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

/ 初心者向け

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

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

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

「もっと業務を効率化したい」「チームのコミュニケーションを円滑にしたい」

そんな時、Slack Botの導入を検討している方もいるのではないでしょうか?

実は、Google Apps Script(GAS)を使えば、コーディング経験が少なくても、誰でも簡単にオリジナルのSlack Botを作成できるんです!

この記事では、GASでSlack Botを作成する際の基本的な手順から、よくある疑問や応用的な使い方まで、サンプルコードを交えながら分かりやすく解説していきます。

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

GASでSlack Botを作成するメリットはたくさんあります。

  • 手軽さ: Googleアカウントがあればすぐに始められます。
  • ノーコード・ローコード: 複雑なサーバー構築や環境設定は不要です。
  • 連携の強み: Google Workspace(Gmail, スプレッドシート, ドキュメントなど)との連携が容易です。
  • コスト: 基本的に無料(※一定の利用量を超えた場合は有料プランもあります)。

Slack Bot作成の全体像

GASでSlack Botを作成する流れは、大きく分けて以下の2ステップになります。

1. Slack側の設定: Incoming Webhooksを設定し、Botにメッセージを送信するためのURLを取得する。

2. GAS側の実装: 取得したURLに対して、GASからHTTPリクエストを送信し、メッセージを投稿するスクリプトを作成する。

Step 1: Slack側の設定(Incoming Webhooks)

まず、Botがメッセージを投稿できるように、Slack側で「Incoming Webhooks」という機能を使えるように設定します。

1. Slackアプリの追加

  • Slackのワークスペースに管理権限があることを確認してください。
  • Slackの「App Directory」にアクセスします。
  • 「Build」 -> 「Create an app」 -> 「From scratch」を選択します。
  • App Name(アプリ名)とDevelopment Slack workspace(開発するワークスペース)を選択し、「Create App」をクリックします。

2. Incoming Webhooksの有効化

  • 作成したアプリの「Features」メニューから「Incoming Webhooks」を選択します。
  • 「Activate Incoming Webhooks」のスイッチをONにします。
  • 「Add New Webhook to Workspace」ボタンをクリックします。
  • メッセージを投稿したいチャンネルを選択し、「Allow」をクリックします。

3. Webhook URLの取得

  • 設定が完了すると、「Webhook URLs」という項目にURLが表示されます。このURLが、GASからメッセージを投稿する際に必要になります。
  • このURLは他人に見られないように、大切に保管してください。

Step 2: GAS側の実装

次に、取得したWebhook URLを使って、GASからSlackにメッセージを投稿するスクリプトを作成します。

1. GASプロジェクトの作成

  • Google ドライブを開き、「新規」->「その他」->「Google Apps Script」を選択して、新しいプロジェクトを作成します。
  • プロジェクト名を分かりやすいものに変更しましょう(例: SlackBotSender)。

2. サンプルコード

以下のコードをGASエディタに貼り付けてください。

function sendSlackMessage() {
  var webhookUrl = 'ここにSlackから取得したWebhook URLを貼り付ける'; // ★★★ここを置き換えてください
  var message = {
    "text": "こんにちは!GASから投稿されたメッセージです!",
    "username": "GAS Bot", // Botの名前
    "icon_emoji": ":robot_face:" // Botのアイコン(絵文字)
  };

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

  UrlFetchApp.fetch(webhookUrl, options);
}
  • 'ここにSlackから取得したWebhook URLを貼り付ける' の部分を、先ほどSlackで取得した実際のWebhook URLに置き換えてください。
  • message オブジェクトで、投稿するメッセージの内容、Botの名前、アイコンなどを設定できます。詳しくはSlackのAPIドキュメントを参照してください。

3. スクリプトの実行

  • GASエディタの上部にある「実行」ボタン(▶︎ のアイコン)をクリックします。
  • 初めて実行する際には、スクリプトへのアクセス許可を求められます。内容を確認し、許可してください。
  • 実行が成功すると、指定したSlackチャンネルにメッセージが投稿されているはずです!

応用編:定時投稿やイベントトリガー

GASの強力な機能を使えば、Slack Botをさらに便利に活用できます。

1. 定時投稿

  • GASの「トリガー」機能を使えば、指定した時間に自動でメッセージを投稿させることができます。
  • GASエディタで「時計」のアイコン(トリガー)をクリックし、「トリガーを追加」から「時間主導型」を選択し、投稿したい頻度や時間を設定します。

2. スプレッドシートからの情報取得

  • スプレッドシートに保存したデータをSlackに通知するBotも作成できます。
  • 例えば、タスク管理シートの期限が迫っているタスクを毎朝Slackに通知する、といったことが可能です。
function sendSpreadsheetDataToSlack() {
  var webhookUrl = 'ここにSlackから取得したWebhook URLを貼り付ける';
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('タスクリスト'); // ★★★シート名を置き換えてください
  var data = sheet.getDataRange().getValues();

  var message = "今日のタスク:";
  for (var i = 1; i < data.length; i++) { // ヘッダー行をスキップ
    var task = data[i][0]; // A列のタスク名
    var dueDate = new Date(data[i][1]); // B列の期日
    var today = new Date();
    today.setHours(0, 0, 0, 0); // 時間をリセットして比較

    // 期日が今日か、または期日が過ぎている場合
    if (dueDate.setHours(0, 0, 0, 0) === today.getTime() || dueDate < today) {
      message += "\n- " + task + " (期日: " + Utilities.formatDate(dueDate, 'JST', 'yyyy/MM/dd') + ")";
    }
  }

  if (message === "今日のタスク:") {
    message = "今日のタスクはありません!";
  }

  var payload = {
    "text": message,
    "username": "タスク通知 Bot",
    "icon_emoji": ":calendar:"
  };

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

  UrlFetchApp.fetch(webhookUrl, options);
}

まとめ

いかがでしたでしょうか?

GASを使えば、Slack Botの作成は驚くほど簡単です。

今回ご紹介した基本的なメッセージ送信機能から、定時投稿、スプレッドシートとの連携まで、アイデア次第で様々な自動化が実現できます。

ぜひ、この記事を参考に、あなたのチームにぴったりのSlack Botを作成してみてください!

ご不明な点があれば、お気軽にコメントで質問してくださいね!

それでは、また次回の記事でお会いしましょう!

GAS自動化の導入相談

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

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