はじめに
Slack APIを使用して、指定したチャンネルにメッセージを自動送信するスクリプトをGoogle Apps Script(GAS)で作成する方法をご紹介します。プロジェクト管理や通知の自動化に役立つ実装です。
必要な準備
Slack APIトークンの取得
- まず、Slack APIを利用するためにAPIトークンを取得します。 SlackのワークスペースにてSlack APIのページにアクセスし、適切な範囲の権限を持つトークンを取得してください。
トークンは、chat:write 権限を持っている必要があります。 - Google Apps Scriptでの環境設定
Google Apps Scriptでプロジェクトを作成し、スクリプトプロパティにSlack APIトークンを保存します。
スクリプトプロパティは、以下のコードで設定します。
title.gs
PropertiesService.getScriptProperties().setProperty('SLACK_API_TOKEN', 'your-slack-api-token');
以下は、Slackの指定チャンネルにメッセージを送信するための関数です。
title.gs
/**
* Slackの指定されたチャンネルにメッセージを送信する関数。
*
* @param {string} channel - メッセージを送信するSlackのチャンネル名。例: "#general" や "#task"。
* @param {string} text - 送信するメッセージのテキスト。例: "タスクが完了しました。"。
*/
function sendMessageToSlack(channel, text) {
let url = 'https://slack.com/api/chat.postMessage';
// スクリプトプロパティからAPIトークンを取得
let scriptProperties = PropertiesService.getScriptProperties();
let token = scriptProperties.getProperty('SLACK_API_TOKEN');
if (!token) {
Logger.log("Error: Slack API token is not set in script properties.");
return;
}
// リクエストのペイロード
let payload = {
'token': token,
'channel': channel,
'text': text
};
// オプション設定
let options = {
'method': 'post',
'payload': payload
};
try {
// Slack APIにリクエストを送信
let response = UrlFetchApp.fetch(url, options);
let result = JSON.parse(response.getContentText());
// Slack APIからのレスポンスを確認
if (result.ok) {
Logger.log("Message sent successfully to channel: " + channel);
} else {
Logger.log("Error: " + result.error);
}
} catch (error) {
Logger.log("Error sending message to Slack: " + error.toString());
}
}
コードの解説
- APIトークンの取得
スクリプトプロパティ (PropertiesService.getScriptProperties()) を使用して、Slack APIトークンを取得します。このトークンが存在しない場合、エラーログを出力して処理を終了します。 - ペイロードの作成
Slack APIにPOSTする際のペイロード(送信データ)を作成します。ここでは、APIトークン、送信先チャンネル、送信するテキストを設定します。 - APIリクエストの送信
UrlFetchApp.fetch を使用して、Slack APIにPOSTリクエストを送信します。成功した場合はログに成功メッセージが表示され、エラーが発生した場合はエラーメッセージが表示されます。
注意点
- SlackのAPIトークンは機密情報のため、漏洩しないようにスクリプトプロパティや外部ファイルで管理しましょう。
- トークンやチャンネル名が正しく設定されていないと、メッセージ送信に失敗します。特にSlackのワークスペースやチャンネルが公開されているか、権限が正しく設定されているか確認してください。
おわりに
このスクリプトを使えば、プロジェクトの進捗状況やタスクの完了通知などをSlackで自動化することができます。