Chatwork 複数の ROOM_ID をまとめて取得して、ルーム名付きでコンソールに出力

[Python]

import requests
from datetime import datetime, timezone, timedelta

# ===== 設定 =====
API_TOKEN = "YOUR_CHATWORK_API_TOKEN"
ROOM_IDS = [
    "123456789",  # ルームID1
    "987654321",  # ルームID2
]
BASE_URL = "https://api.chatwork.com/v2"

headers = {
    "X-ChatWorkToken": API_TOKEN
}

# ===== 各ルームの処理 =====
for room_id in ROOM_IDS:
    # ルーム情報(名前取得)
    room_info_url = f"{BASE_URL}/rooms/{room_id}"
    r_info = requests.get(room_info_url, headers=headers)
    if r_info.status_code != 200:
        print(f"Room {room_id} 情報取得エラー: {r_info.status_code}")
        continue
    room_name = r_info.json().get("name", f"Room-{room_id}")

    print(f"\n=== {room_name} (ID: {room_id}) ===")

    # メッセージ取得
    msg_url = f"{BASE_URL}/rooms/{room_id}/messages"
    params = {"force": 1}
    r_msg = requests.get(msg_url, headers=headers, params=params)
    if r_msg.status_code != 200:
        print(f"メッセージ取得エラー: {r_msg.status_code}")
        continue

    messages = r_msg.json()

    for idx, msg in enumerate(messages, start=1):
        sender = msg.get("account", {}).get("name", "不明")
        body = msg.get("body", "")
        ts = datetime.fromtimestamp(msg["send_time"], tz=timezone.utc) \
                      .astimezone(timezone(timedelta(hours=9)))  # 日本時間に変換
        print(f"[{idx}] {sender} ({ts.strftime('%Y-%m-%d %H:%M:%S')})")
        print(body)
        print("-" * 40)