Slack通知をPythonで自動化!エラーログや日報を定期投稿する方法

はじめに

Slackを活用しているチームでは、日々の定例報告やシステムのエラーログを「自動で通知」できると便利です。Pythonを使えば、手作業の報告や確認を削減し、情報共有を効率化できます。
この記事では、Slack APIとPythonを組み合わせて「日報投稿」や「エラーログ通知」を自動化する方法を紹介します。


準備:Slack APIトークンを取得

Slackにメッセージを送信するには「Botトークン」が必要です。以下の手順で用意しましょう。

  1. Slack API にアクセス
  2. 「Your Apps」から新規アプリを作成
  3. OAuth & PermissionsBot Token Scopeschat:write を追加
  4. ワークスペースにインストールし、Bot User OAuth Token を控える
    (例: xoxb-1234567890-abcdefg...

Python環境の準備

Slack通知を行うには公式ライブラリ slack_sdk を利用します。

pip install slack_sdk

基本のSlack通知スクリプト

以下のコードで、指定チャンネルにメッセージを送信できます。

from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError

# Botトークンを設定
SLACK_BOT_TOKEN = "xoxb-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx"
CHANNEL_ID = "#general"  # チャンネル名またはID

client = WebClient(token=SLACK_BOT_TOKEN)

try:
    response = client.chat_postMessage(
        channel=CHANNEL_ID,
        text="PythonからSlackにメッセージを送信しました!"
    )
    print("送信成功:", response["ts"])
except SlackApiError as e:
    print(f"送信エラー: {e.response['error']}")

これで、Slackに自動でメッセージを送れるようになりました。


活用例①:エラーログの通知

システムでエラーが発生したときにSlackへ通知すれば、トラブルを即座に検知できます。

import traceback

def risky_task():
    return 1 / 0  # 強制的にエラー発生

try:
    risky_task()
except Exception:
    error_message = traceback.format_exc()
    client.chat_postMessage(
        channel=CHANNEL_ID,
        text=f":warning: エラー発生!\n```{error_message}```"
    )

Slack上でスタックトレースが見えるので、運用監視がスムーズになります。


活用例②:日報を定期投稿

毎日決まった時間に「本日のタスク進捗」や「売上データ」などを送ることも可能です。
以下はスケジューラ schedule を使った例です。

pip install schedule
import schedule
import time
from datetime import datetime

def send_daily_report():
    today = datetime.now().strftime("%Y-%m-%d")
    report = f"""
📊 日報 ({today})
- タスク完了: 5件
- 未完了: 2件
- 明日の予定: レビュー対応
"""
    client.chat_postMessage(channel=CHANNEL_ID, text=report)

# 毎日18:00に実行
schedule.every().day.at("18:00").do(send_daily_report)

while True:
    schedule.run_pending()
    time.sleep(60)

発展:ファイルやグラフも送信可能

Slack APIでは、CSVや画像ファイルもアップロードできます。

client.files_upload(
    channels=CHANNEL_ID,
    file="report.csv",
    title="売上レポート",
    initial_comment="最新の売上データを共有します。"
)

まとめ

  • Python × Slack APIで簡単に通知が自動化できる
  • エラーログ通知でトラブル対応が迅速化
  • 日報投稿で定型業務を削減
  • ファイル添付でレポート共有も可能

業務の自動化やチーム連携の効率化に直結するので、ぜひ導入してみてください。

タイトルとURLをコピーしました