Skip to content

liatris000/knowbe_batch_tools

Repository files navigation

KnowBe 一括データエクスポートツール

これは何?

KnowBe(knowbe.jp)は福祉事業所向けの業務支援システムですが、利用者の名簿データや国保連への請求書類を一括エクスポートする機能がありません。

このツールは、KnowBeの各店舗アカウントのID・パスワードが書かれたCSVファイルを渡すだけで、全店舗の以下のデータを自動で一括取得します:

  1. 利用者名簿CSV — 氏名・フリガナ・受給者証番号・住所・電話番号・障害種別・生年月日など
  2. 国保連請求書類CSV — サービス提供実績記録票(jisseki)と請求書・明細書(seikyu-meisai)

経緯

もともとブラウザ上でJavaScriptを手動実行してデータを取得していましたが(iframe方式)、1アカウントあたり10〜15分かかり、数十店舗を処理するのは現実的ではありませんでした。

調査の結果、KnowBeにはフロントエンドが内部的に使っているREST APIがあり、以下のエンドポイントを発見しました:

用途 メソッド URL
ログイン POST https://api.knowbe.jp/v1/mgr/auth/login
ユーザー一覧 GET https://api.knowbe.jp/v202404/mgr/facility/users
ユーザー詳細 GET https://api.knowbe.jp/v202404/mgr/facility/users/{id}
実績記録票 GET https://api.knowbe.jp/v1/mgr/invoices/jisseki/{year}/{month}?type=csv
請求書明細 GET https://api.knowbe.jp/v1/mgr/invoices/seikyu_meisai/{year}/{month}?type=csv

認証は Authorization: Bearer {JWTトークン} ヘッダー。ログインAPIがトークンを返します。

このAPIを直接叩くNode.jsスクリプト(knowbe_batch.js)を作ることで、1アカウント約30秒(ブラウザ方式の20倍速)で処理できるようになりました。60アカウントでも約30分で完了します。


クイックスタート(やることは3つだけ)

ステップ1: Node.jsを入れる

まだ入っていない場合のみ。https://nodejs.org/ からLTS版をダウンロードしてインストール。

確認方法(ターミナルで):

node --version
# v18.x.x 以上ならOK

ステップ2: アカウントCSVを作る

ExcelやGoogleスプレッドシートで以下の形式のCSVを作ります。ファイル名は何でもOK(例: accounts.csv)。

name,email,password
sample_A_東京,sample-a@example.com,password123
sample_B_東京,sample-b@example.com,password456
sample_A_大阪,sample-c@example.com,password789
sample_B_大阪,sample-d@example.com,password012
必須 説明
name 出力フォルダ名になる。店舗名_型_地域名 を推奨
email KnowBeログイン用メールアドレス
password KnowBeログイン用パスワード

注意:

  • 1行目はヘッダー(name,email,password)が必須
  • A型・B型は別アカウントなので別々の行に書く
  • パスワードにカンマ(,)が含まれる場合はJSON形式を使ってください(後述)

ステップ3: 実行する

ターミナルで knowbe_batch_tools フォルダに移動して実行:

cd knowbe_batch_tools
node knowbe_batch.js accounts.csv

これだけです。全店舗のデータが自動で取得されます。


実行中の画面イメージ

🚀 KnowBe 一括エクスポート開始
   アカウント数: 4
   出力先: /path/to/knowbe_batch_tools
   名簿: 取得する
   請求書類: 2022-07 ~ 2024-09

============================================================
📋 sample_A_東京
============================================================
  ✅ ログイン成功
  📥 ユーザー一覧を取得中...
     22名のユーザーを検出
     [1/22] 山田 太郎... OK
     [2/22] 佐藤 花子... OK
     ...
  ✅ 名簿CSV出力: sample_A_東京_meibo.csv (22名)
  📥 請求書類をダウンロード中 (2022-07 ~ 2024-09)...
  ✅ 請求書類: 54/54 ファイル

============================================================
📋 sample_B_東京
============================================================
  ✅ ログイン成功
  ...

============================================================
📊 処理完了サマリー (58.3秒)
============================================================
   成功: 4/4
     ✅ sample_A_東京: 名簿22名, 請求書類54件
     ✅ sample_B_東京: 名簿26名, 請求書類54件
     ✅ sample_A_大阪: 名簿15名, 請求書類54件
     ✅ sample_B_大阪: 名簿18名, 請求書類54件

   結果JSON: batch_result_2026-02-09.json

出力されるファイル

実行すると、name 列の値がフォルダ名になって、その中にファイルが生成されます。

knowbe_batch_tools/
├── knowbe_batch.js                   # このスクリプト
├── accounts.csv                      # あなたが作ったアカウント一覧
│
├── sample_A_東京/                    # ← name列の値がフォルダ名
│   ├── sample_A_東京_meibo.csv      # 利用者名簿(22名分)
│   ├── jissekikiroku_2022-07.csv    # サービス提供実績記録票 2022年7月
│   ├── jissekikiroku_2022-08.csv    #   〃 2022年8月
│   ├── ...                          #   〃 (2024年9月まで)
│   ├── seikyu-meisai_2022-07.csv    # 請求書・明細書 2022年7月
│   ├── seikyu-meisai_2022-08.csv    #   〃 2022年8月
│   └── ...                          #   〃 (2024年9月まで)
│
├── sample_B_東京/
│   ├── sample_B_東京_meibo.csv
│   ├── jissekikiroku_2022-07.csv
│   └── ...
│
├── sample_A_大阪/
│   └── ...
│
└── batch_result_2026-02-09.json      # 処理結果のサマリー(成功/失敗一覧)

名簿CSV(meibo.csv)の中身

Excelでそのまま開けます(UTF-8 BOM付き)。

ユーザーID セイ メイ 受給者証番号 郵便番号 住所 電話番号 メールアドレス 保護者氏名 続柄 緊急連絡先 障害種別 通所開始時間 通所終了時間 生年月日 利用開始日 利用終了日
12345 山田 太郎 ヤマダ タロウ 1234567890 123-4567 〇〇町1-2-3 090-1234-5678 example@example.com 山田花子 090-8765-4321 知的障害、発達障害 09:00 16:00 1990-01-01 2020-04-01

障害種別は複数ある場合「身体障害、知的障害」のように「、」区切りで入ります。利用終了日が空の人は現在利用中です。

請求書類CSV(jisseki / seikyu-meisai)の中身

KnowBeのダウンロードページで手動ダウンロードしたものと同一内容です。文字コードはShift-JIS(Excelで「データ→テキストから」でShift-JIS指定でインポート)。

処理結果JSON(batch_result)

全アカウントの成功/失敗と取得件数が記録されます。失敗した場合はエラー内容も記載されるので、ログイン情報の修正に使えます。


オプション一覧

node knowbe_batch.js <accounts.csv> [オプション]
オプション 説明 デフォルト
--meibo-only 名簿データのみ取得(請求書類は取らない) 両方取得
--invoices-only 請求書類のみダウンロード(名簿は取らない) 両方取得
--invoice-from YYYY-MM 請求書類の開始月 2022-07
--invoice-to YYYY-MM 請求書類の終了月 2024-09
--output-dir DIR 出力先ディレクトリ カレントディレクトリ
--overwrite 既存ファイルを上書きする 上書きしない
--help ヘルプを表示

よく使うパターン

# 名簿だけ欲しい(一番速い。1アカウント約10秒)
node knowbe_batch.js accounts.csv --meibo-only

# 請求書類だけ欲しい
node knowbe_batch.js accounts.csv --invoices-only

# 2024年分だけ取りたい
node knowbe_batch.js accounts.csv --invoice-from 2024-01 --invoice-to 2024-12

# デスクトップに出力
node knowbe_batch.js accounts.csv --output-dir ~/Desktop/knowbe_output

入力ファイルの形式

CSV形式(推奨)

Excelで作って「CSV UTF-8」で保存。一番簡単です。

name,email,password
sample_A_東京,sample-a@example.com,password123
sample_B_東京,sample-b@example.com,password456

JSON形式(パスワードにカンマが含まれる場合)

[
  {
    "name": "sample_A_東京",
    "email": "sample-a@example.com",
    "password": "password123"
  },
  {
    "name": "sample_B_東京",
    "email": "sample-b@example.com",
    "password": "password456"
  }
]

上書き防止の仕組み

デフォルトで、既に存在するファイルは上書きしません。

  • 名簿CSV: 既存ファイルがある場合、タイムスタンプ付きの名前でバックアップしてから新しいCSVを出力
  • 請求書類CSV: 既存ファイルがある場合、スキップ(既にダウンロード済みなので再取得不要)

全部取り直したい場合は --overwrite をつけてください。


処理速度の目安

処理内容 1アカウントあたり 60アカウント
名簿のみ 約10秒 約10分
請求書類のみ(27ヶ月分) 約20秒 約20分
名簿+請求書類 約30秒 約30分

トラブルシューティング

「ログイン失敗」と表示される

  • accounts.csv の email / password が正しいか確認
  • KnowBe側でパスワードが変更されていないか確認
  • KnowBeの管理画面(https://mgr.knowbe.jp/v2/)にブラウザで手動ログインできるか確認
  • batch_result JSON にエラー内容が記録されているので参照

「node: command not found」と表示される

Node.jsがインストールされていません。https://nodejs.org/ からインストールしてください。

途中で止まった

  • ネットワーク接続を確認
  • もう一度実行すれば、既にダウンロード済みの請求書類はスキップされるので途中から再開できます
  • 名簿CSVは毎回取り直しになります

CSVが文字化けする

  • 名簿CSV → UTF-8 BOM付き。Excelでそのまま開けます
  • 請求書類CSV → Shift-JIS。Excelの「データ→テキストから→Shift-JIS指定」でインポート

ファイル構成

knowbe_batch_tools/
├── README.md                # このファイル
├── knowbe_batch.js          # 一括バッチ処理スクリプト(推奨)
├── get_user_ids.js          # ユーザーID取得(ブラウザ手動方式用)
├── extract_user_data.js     # ユーザーデータ取得(ブラウザ手動方式用)
├── create_csv.py            # 名簿CSV生成(ブラウザ手動方式用)
└── sample_output.csv        # 出力サンプル

補足: ブラウザ手動方式(従来方式)

knowbe_batch.js が使えない環境や、単発での確認・デバッグ時に使います。Chrome + Claude in Chrome拡張機能 + Python 3.xが必要です。

  1. ブラウザで https://mgr.knowbe.jp/v2/ にログイン
  2. 利用者一覧ページで get_user_ids.js をコンソール実行 → ユーザーID一覧を取得
  3. 同じページでiframe方式のスクリプトを実行 → 各ユーザーの詳細データを抽出
  4. python3 create_csv.py でCSV生成

詳細は各スクリプトのコメントを参照。1アカウントあたり10〜15分かかるため、複数店舗にはバッチ方式を推奨します。


注意事項

  • A型とB型は別アカウント: KnowBeでは同じ事業所でもA型・B型でログイン情報が異なります。CSVには両方とも記載してください
  • リクエスト間隔: サーバー負荷軽減のため300msの間隔を空けています。この値の変更は推奨しません
  • 個人情報: 取得データには利用者の個人情報が含まれます。適切に管理してください
  • アカウント情報: accounts.csv にはログイン情報が含まれます。共有フォルダに放置しないでください

About

福祉事業所向けデータ一括エクスポートツール — Node.js

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors