0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google Apps ScriptでSlackにメッセージを送信する方法

Posted at

はじめに

Slack APIを使用して、指定したチャンネルにメッセージを自動送信するスクリプトをGoogle Apps Script(GAS)で作成する方法をご紹介します。プロジェクト管理や通知の自動化に役立つ実装です。

必要な準備

Slack APIトークンの取得

  1. まず、Slack APIを利用するためにAPIトークンを取得します。 SlackのワークスペースにてSlack APIのページにアクセスし、適切な範囲の権限を持つトークンを取得してください。
    トークンは、chat:write 権限を持っている必要があります。
  2. 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で自動化することができます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?