Pythonでバッチを組むと、処理結果やエラーをどこかに通知したくなります、メールだと埋もれがちなので、チャットに飛ばしておくと見落としが減って便利です
通知先としてよく挙がるLINEやメールは、最近ちょっとハードルが上がっています、LINEは手軽だったLINE Notifyが2025年3月で終了して、今はメッセージ送信にLINE公式アカウントの用意が必要になりました、メールも安定して送ろうとすると外部サービスの契約が要りがちです
その点Chatworkは、アカウントさえあればAPIトークンとルームIDの2つを用意するだけでPythonから数行でメッセージを送れます、この記事ではその2つの取得方法から、実際に送るサンプルコードまでまとめてご紹介します
公式ドキュメントにあるソースを少し弄った程度のシンプルなプログラムです、難しい準備は要らないので身構えなくて大丈夫です
APIの利用に必要なもの
プログラムのなかで使うパラメータは次の2つです
- APIトークン(誰として送るか=送信元アカウントの鍵)
- ルームID(どのチャットに送るか=宛先)
それぞれの取得方法を順番に見ていきます
APIトークンを取得
ここで取得したAPIトークンのアカウントとしてメッセージが送られます、普段使いのアカウントではなく通知用アカウントを別で作ってトークンを取得するのがおすすめです
パーソナルプラン以外(ビジネスプランなど)では、APIトークンの利用に組織管理者への申請・承認が必要なことがあります、トークンの画面が出てこないときは管理者に確認してみてください
APIトークンはパスワードと同じです、人に教えたりGitHubなどの公開リポジトリにそのまま載せたりしないように気をつけてください、もし漏れてしまったときはサービス連携の画面から再発行すれば、古いトークンは無効になります
ルームIDを取得
次は、メッセージを送りたいルームのルームIDを調べます
通知の対象にするグループチャットをクリックして、アクティブな状態にしておきます
ブラウザ版ならURLからも確認できます、対象のルームを開いたときのアドレスが https://www.chatwork.com/#!rid●●●●●●●● のようになっていて、#!rid のうしろの数字がルームIDです
Pythonのプログラム
肝心のPythonプログラムがこちらです、APIトークンとルームIDはコードに直書きせず、.envファイルから読み込む形にしています、こうしておけば値を差し替えるのも楽ですし、うっかり鍵を公開してしまう事故も防げます
まず読み込みに使うpython-dotenvを入れておきます
pip install python-dotenv次にプロジェクトの直下に.envを作って、さっき取得したAPIトークンとルームIDを書いておきます
CHATWORK_TOKEN=取得したAPIトークン
CHATWORK_ROOM_ID=取得したルームID作った.envは.gitignoreに入れて、GitHubなどにアップしないようにしておきます、これで鍵をコードに直書きせず、リポジトリにも残さずに済みます
本体のコードがこちらです、ステータスコードが200かどうかで送信成功をTrue・Falseで返すようにしています
import os
import requests
from dotenv import load_dotenv
load_dotenv()
CHATWORK_TOKEN = os.environ["CHATWORK_TOKEN"]
CHATWORK_ROOM_ID = os.environ["CHATWORK_ROOM_ID"]
def send_to_chatwork(message, chatwork_token=CHATWORK_TOKEN, room_id=CHATWORK_ROOM_ID) -> bool:
url = f"https://api.chatwork.com/v2/rooms/{room_id}/messages"
headers = {
"accept": "application/json",
"content-type": "application/x-www-form-urlencoded",
"x-chatworktoken": chatwork_token,
}
payload = {
"self_unread": 0,
"body": message,
}
response = requests.post(url, data=payload, headers=headers)
return response.status_code == 200やっていることはシンプルで、https://api.chatwork.com/v2/rooms/{room_id}/messages に対して、ヘッダーにX-ChatWorkToken(取得したAPIトークン)を入れて、bodyにメッセージ本文を入れてPOSTするだけです、self_unreadは自分側を未読にするかどうかの任意指定で、0だと既読の状態で送られます
あとは send_to_chatwork(‘通知したいメッセージ’) のように呼べば、バッチの好きなタイミングで通知できます
ChatworkのAPIには利用回数の制限があります、ループの中で大量に送るような使い方は避けて、処理結果やエラーの要点だけ送るくらいがちょうどいいです
通知結果
↓のように、APIトークンを発行したアカウントとしてメッセージが送信されます

公式ドキュメント
公式ドキュメントはいくつかありますが、↓のページは簡易テストもできてわかりやすいです
メッセージを投稿する|Chatwork API Documentation
あとがき
仕事で処理結果やエラーを共有するなら、Chatworkは利用シーンが多いので作っておくと便利です
Pythonの自動化つながりだと、Selenium WebDriverWaitの使い方でスクレイピングを安定させて、その結果をこのChatwork通知に流す、といった組み合わせも便利です
作ったスクリプトを配りたいときは、PyInstallerでexe化する話もあわせてどうぞ







コメント