はじめに
Slackを活用しているチームでは、日々の定例報告やシステムのエラーログを「自動で通知」できると便利です。Pythonを使えば、手作業の報告や確認を削減し、情報共有を効率化できます。
この記事では、Slack APIとPythonを組み合わせて「日報投稿」や「エラーログ通知」を自動化する方法を紹介します。
準備:Slack APIトークンを取得
Slackにメッセージを送信するには「Botトークン」が必要です。以下の手順で用意しましょう。
- Slack API にアクセス
- 「Your Apps」から新規アプリを作成
OAuth & Permissions
→Bot Token Scopes
にchat:write
を追加- ワークスペースにインストールし、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で簡単に通知が自動化できる
- エラーログ通知でトラブル対応が迅速化
- 日報投稿で定型業務を削減
- ファイル添付でレポート共有も可能
業務の自動化やチーム連携の効率化に直結するので、ぜひ導入してみてください。