ken_nogi/lineworks-sync/lw_board_check/マニュアル.md
Kenichiro NOGI ed33892f08 chore: 作業中の変更を整理しコミット(複数プロジェクト分)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-02 11:09:50 +09:00

7.3 KiB
Raw Blame History

LINE WORKS 掲示板 既読/未読チェックツール

指定した掲示板の全投稿について、誰が読んで誰が読んでいないかを一覧化するツールです。

同梱ファイル

ファイル 内容
lw_board_check.py 本体スクリプト
.env 認証情報の設定ファイル
private_20260709122316.key 認証用の秘密鍵
oauth/ 必読投稿の閲覧権限照合用フォルダ(後述)
oauth_token_collector/ 投稿者に配布する認証情報取得ツール一式
マニュアル.md このファイル

.envprivate_*.keyoauth/ フォルダ内のzipは機密情報です。第三者に渡したり、外部に公開したりしないでください。

動作要件

  • Python 3.9 以上がインストールされていること(未インストールの場合は python.org から入手してください)
  • 実行に必要な追加モジュール(requests / cryptography)が入っていなくても、初回実行時に自動でインストールされます(インターネット接続が必要です)

使い方

このフォルダをコマンドプロンプトまたはPowerShellで開いて実行します。

1. 対話形式で実行(掲示板を選びながら使う場合)

python lw_board_check.py
  1. 掲示板一覧が表示されるので、番号で対象を選ぶ
  2. 自動で処理が進み、完了するとファイルの保存先が表示される

2. 対象を指定して自動実行

python lw_board_check.py --board <名前または表示番号またはID>
python lw_board_check.py --board <名前または表示番号またはID> --target must

--board には以下の3種類どれでも指定できます。自動で判別します。

  • 掲示板名: 完全一致で指定(例: python lw_board_check.py --board "LINE WORKS Q&A")
  • 一覧の表示番号: 対話形式で表示される掲示板一覧の左端の番号(1, 2, 3...)
  • 実際の掲示板ID: 19桁程度の長い数値。一覧では掲示板名のうしろの括弧書きに表示される

--target で処理対象を絞り込めます。省略時は both(両方)。

対象
both 両方(既定)
must 必読投稿のみ
normal 通常投稿(必読フラグなし)のみ

--target を省略して対話形式(掲示板を番号で選ぶ形式)で実行した場合は、選択メニューが表示されます(未入力でEnterなら両方)。掲示板を引数で指定した自動実行時に --target を省略した場合は、プロンプトを出さずに両方が選ばれます。

注意: py コマンド(Pythonランチャー)経由だと環境によって起動直後に終了してしまう不具合を確認しています。python コマンドで実行してください。

認証について

認証方式を選ぶ操作はありません。実行するたびに自動で以下の2つを使い分けます。

投稿の種類 使う認証
通常投稿(必読フラグなし) Service Account(自動・ブラウザ操作不要)
必読投稿(必読フラグあり) oauth/ フォルダ内の認証情報zipを順に試し、閲覧権限がある(HTTP 200が返る)ものだけ採用

必読投稿は投稿者本人でないと既読/未読を閲覧できない仕様のため、oauth/ フォルダに何も無い場合、必読投稿はすべて「対象外」として処理結果から除外されます。

oauth/ フォルダの準備方法(必読投稿を扱う場合のみ)

  1. oauth_token_collector/ フォルダの Run-Get-LineWorksOAuthToken.bat(Windows)または get_lineworks_oauth_token.command(Mac)を、必読投稿を投稿している本人に実行してもらう
  2. 実行すると <ログインID>_OAuth_<日時>.zip(パスワード付き)が生成されるので、安全な経路(LINE WORKS Talkの直接送信など。メール添付は避ける)でこちらへ送ってもらう
  3. 受け取ったzipファイルをそのまま lw_board_check/oauth/ フォルダに置く(解凍不要。中身は実行時に自動で復号される)

複数人分のzipを oauth/ フォルダに置いておけば、lw_board_check.py 実行時に全員分を自動で順に試します。

出力ファイル

board_readers_check/<掲示板名>/ フォルダの中に、ファイル名の先頭に掲示板名を付けた4ファイルが保存されます。

  • <掲示板名>_掲示板読了チェック_<実行日時>.csv: 既読者・未読者1人につき1行のサマリー(Excelでフィルタ・ピボット集計しやすい形式)

    投稿タイトル 投稿日時 必読フラグ 既読者数 未読者数 メンバー名 既読 未読
    (投稿タイトル) (投稿日時) True/False 12 3 山田太郎 1 0

    「既読」「未読」は0/1のフラグで、既読者の行は既読=1・未読=0、未読者はその逆になります。「既読者数」「未読者数」は投稿単位の集計値で、同じ投稿の行には同じ値が入ります。

  • <掲示板名>_未読者集計_<実行日時>.csv: 上記をメンバー単位に集計したもの。「誰が何をどれだけ読んでいないか」を一目で確認できます

    メンバー名 全記事数 既読記事数 未読記事数 未読記事リスト
    山田太郎 5 3 2 R8年度.5月;8年度4月

    未読記事リストは未読の投稿タイトルを ; 区切りで連結したものです。

  • <掲示板名>_掲示板読了チェック_<実行日時>.json: 全データ(調査用)。必読投稿で対象外になったもの一覧(skipped_must_read。投稿タイトル・投稿者名・HTTPステータスを含む)も入っている

  • <掲示板名>_取得ログ_<実行日時>.txt: 実行中の画面表示をそのまま保存したログ。行ごとにタイムスタンプが付く。必読投稿が対象外になった場合はその投稿者名もここに記録される

対象外になった投稿は処理をスキップし、実行結果に「対象外」件数として表示されます。必読投稿が対象外になった場合は、上記JSONと取得ログの両方に投稿者名が残るので、誰に oauth_token_collector/ を再実行してもらえばよいか確認できます。

よくあるエラー

  • 秘密鍵が見つかりません: .envLW_PRIVATE_KEY_FILE が指す場所に鍵ファイルが実在するか確認してください(通常はこのフォルダ内にあるはずです)。
  • 「OAuth認証情報が見つかりません」と表示される: oauth/ フォルダが空、またはフォルダ自体が無い状態です。必読投稿を扱わないなら無視して問題ありません。扱う場合は上記「oauth/ フォルダの準備方法」を参照してください。
  • 「〜のトークン更新に失敗しました」と表示される: そのzipのrefresh_tokenが期限切れの可能性があります。該当の投稿者に oauth_token_collector/ のツールを再実行してもらい、新しいzipに差し替えてください。