GASで実現!Slackのボタン付きメッセージを設定する方法

GASでSlackにボタン付きメッセージを送信したいんだけど、どうすればいいんだろう?
猫男
猫男
catman
catman
それならcatmanが教えてやるさ。GASを使ってSlackのボタン付きメッセージを設定するのは簡単だよ。

GASとSlack APIの事前準備

Slackでボタン付きメッセージを送信するためには、GASとSlack APIの準備が必要です。

Slack APIトークンの取得

Slack APIを使用するにはまずトークンが必要です。

1. Slackの開発者サイトにアクセスし、アプリを作成します。

2. OAuth & Permissionsを設定し、APIトークンを取得します。このトークンは、GASでのメッセージ送信に必要です。

GASプロジェクトの設定

GASでSlackに接続するためのプロジェクトを用意します。

1. Googleドライブで新しいGASプロジェクトを作成します。

2. 必要なスクリプトを書くための準備をします。

Slack APIトークンさえあればGASからメッセージ送信できるんだね!
猫男
猫男

 

GASでSlackにメッセージを送信する手順

GASにスクリプトを書いて、Slackにボタン付きメッセージを送信します。

基本のスクリプト構成

まずは基本的なスクリプトの構成から。


function postSlackMessage() {
  const url = 'https://slack.com/api/chat.postMessage';
  const token = 'YOUR_SLACK_TOKEN_HERE'; // ここにあなたのSlackトークンを入れます

  const message = {
    channel: '#your-channel',
    text: 'Here is a message with a button!',
    attachments: JSON.stringify([
      {
        text: 'Do you like this?',
        fallback: 'You are unable to choose',
        callback_id: 'button_demo',
        color: '#3AA3E3',
        attachment_type: 'default',
        actions: [
          {
            name: 'like',
            text: 'Like',
            type: 'button',
            value: 'like'
          },
          {
            name: 'dislike',
            text: 'Dislike',
            type: 'button',
            value: 'dislike'
          }
        ]
      }
    ])
  };

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

  UrlFetchApp.fetch(url, options);
}

ポイントを解説します:

  • url: Slack APIのエンドポイントです。
  • token: 取得したSlackのトークンを用いて認証します。
  • message: 送信するメッセージ内容とattachmentsを設定します。
  • options: POSTリクエストとして送信するためのオプションです。

 

GASからSlackへボタン付きメッセージを送信するデバッグ方法

実装後にうまく動作するか確認します。

スクリプトをデプロイ

GASのスクリプトをWebアプリケーションとしてデプロイし、Slackへのアクセスを確認します。

1. 「公開」メニューから「Webアプリケーションとして導入」を選択します。

2. 実行するバージョンを選び、アクセス権限を設定して「展開」をクリックします。

Slackでの確認

Slack上でボタン付きメッセージが正しく表示されるかを確認します。

メッセージが送信され、ボタンを押すと正しく反応するか見てみましょう。

すごい!本当にボタン付きのメッセージが届いたよ!これは仕事に活用できそうだなぁ。
猫男
猫男

 

練習問題:Slackにボタン付きメッセージを送ってみよう

次の課題に取り組んでみましょう。

  1. Slack APIトークンを取得し、あなたのワークスペースに接続できるように設定します。
  2. 上記のGASスクリプトを使って、お好きなメッセージを含むボタン付きメッセージを送信してみてください。
  3. デバッグを行い、ボタン押下時の反応を見るためにコンソールにログを残してみましょう。

  

練習問題の解答・解説


function postSlackMessage() {
  const url = 'https://slack.com/api/chat.postMessage';
  const token = 'YOUR_SLACK_TOKEN_HERE';

  const message = {
    channel: '#your-channel',
    text: 'Practice makes perfect!',
    attachments: JSON.stringify([
      {
        text: 'Do you understand?',
        fallback: 'Can’t display buttons',
        callback_id: 'button_practice',
        color: '#FF5733',
        attachment_type: 'default',
        actions: [
          {
            name: 'yes',
            text: 'Yes',
            type: 'button',
            value: 'yes'
          },
          {
            name: 'no',
            text: 'No',
            type: 'button',
            value: 'no'
          }
        ]
      }
    ])
  };

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

  const response = UrlFetchApp.fetch(url, options);
  Logger.log(response.getContentText()); // APIからのレスポンスをログに出力
}

このスクリプトは、Slack APIを使用してメッセージを送信し、そのレスポンスをLoggerで記録するものです。

  • 各ボタンには、name、text、valueのプロパティを設定しています。
  • 色やテキストを変更して自分なりにアレンジしてみると良いでしょう。
  • APIから返されるレスポンスをログで確認することで、送信が成功したかどうかをチェックできます。
catman
catman
これでSlackのボタン付きメッセージについて、一通り理解できたはずさ。どんどん試してみよう!

EARTHPG 自動化研究所

「その作業、仕組みにできます。」

Google Apps Script、Python、スプレッドシート自動化、WordPress開発、 API連携、AI活用まで対応。 小さな自動化から業務全体の設計まで、研究所が支援します。