PR
私が使っているPCガジェット類
作業環境で実際に使っている・気になっている周辺機器などをまとめました
※ 一部のリンクは広告(アフィリエイト)を含みます
作業環境で実際に使っている・気になっている周辺機器などをまとめました
※ 一部のリンクは広告(アフィリエイト)を含みます
Pythonでバッチを組むと、処理結果やエラーをどこかに通知したくなります、メールだと埋もれがちなので、チャットに飛ばしておくと見落としが減って便利です
通知先としてよく挙がるLINEやメールは、最近ちょっとハードルが上がっています、LINEは手軽だったLINE Notifyが2025年3月で終了して、今はメッセージ送信にLINE公式アカウントの用意が必要になりました、メールも安定して送ろうとすると外部サービスの契約が要りがちです
その点Chatworkは、アカウントさえあればAPIトークンとルームIDの2つを用意するだけでPythonから数行でメッセージを送れます、この記事ではその2つの取得方法から、実際に送るサンプルコードまでまとめてご紹介します
公式ドキュメントにあるソースを少し弄った程度のシンプルなプログラムです、難しい準備は要らないので身構えなくて大丈夫です
プログラムのなかで使うパラメータは次の2つです
それぞれの取得方法を順番に見ていきます
ここで取得したAPIトークンのアカウントとしてメッセージが送られます、普段使いのアカウントではなく通知用アカウントを別で作ってトークンを取得するのがおすすめです
パーソナルプラン以外(ビジネスプランなど)では、APIトークンの利用に組織管理者への申請・承認が必要なことがあります、トークンの画面が出てこないときは管理者に確認してみてください
APIトークンはパスワードと同じです、人に教えたりGitHubなどの公開リポジトリにそのまま載せたりしないように気をつけてください、もし漏れてしまったときはサービス連携の画面から再発行すれば、古いトークンは無効になります
次は、メッセージを送りたいルームのルームIDを調べます
通知の対象にするグループチャットをクリックして、アクティブな状態にしておきます
ブラウザ版ならURLからも確認できます、対象のルームを開いたときのアドレスが https://www.chatwork.com/#!rid●●●●●●●● のようになっていて、#!rid のうしろの数字がルームIDです
肝心の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化する話もあわせてどうぞ
PythonとExcelを中心に仕事に役立つ業務ツールや自動化、スクレイピングツールの作成を受注していて、クラウドワークスでは気が付けば100件以上のお仕事を受注してきました!
会社員をやりながらの副業なので時間の捻出は相応ですが、クライアントの方々と近い立場でこちらからも提案しながら活動していますのでお悩みあれば是非ご相談ください
VBAとPythonを中心にユーザー側でできるITを自己学習しているので備忘録半分、学習履歴を残して同じ道を辿る人の参考になればとブログを始めました
副業でスクレイピングツール作成を中心にできることを色々やっていますのでご相談いただけるとありがたいです!
クラウドワークスのページへ
ココナラのページへ
コメント