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. 必要なスクリプトを書くための準備をします。
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にボタン付きメッセージを送ってみよう
次の課題に取り組んでみましょう。
- Slack APIトークンを取得し、あなたのワークスペースに接続できるように設定します。
- 上記のGASスクリプトを使って、お好きなメッセージを含むボタン付きメッセージを送信してみてください。
- デバッグを行い、ボタン押下時の反応を見るためにコンソールにログを残してみましょう。
練習問題の解答・解説
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から返されるレスポンスをログで確認することで、送信が成功したかどうかをチェックできます。