KnowBe(knowbe.jp)は福祉事業所向けの業務支援システムですが、利用者の名簿データや国保連への請求書類を一括エクスポートする機能がありません。
このツールは、KnowBeの各店舗アカウントのID・パスワードが書かれたCSVファイルを渡すだけで、全店舗の以下のデータを自動で一括取得します:
- 利用者名簿CSV — 氏名・フリガナ・受給者証番号・住所・電話番号・障害種別・生年月日など
- 国保連請求書類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分で完了します。
まだ入っていない場合のみ。https://nodejs.org/ からLTS版をダウンロードしてインストール。
確認方法(ターミナルで):
node --version
# v18.x.x 以上ならOKExcelや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 | ○ | 出力フォルダ名になる。店舗名_型_地域名 を推奨 |
| ○ | KnowBeログイン用メールアドレス | |
| password | ○ | KnowBeログイン用パスワード |
注意:
- 1行目はヘッダー(
name,email,password)が必須 - A型・B型は別アカウントなので別々の行に書く
- パスワードにカンマ(,)が含まれる場合はJSON形式を使ってください(後述)
ターミナルで 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 # 処理結果のサマリー(成功/失敗一覧)
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 |
障害種別は複数ある場合「身体障害、知的障害」のように「、」区切りで入ります。利用終了日が空の人は現在利用中です。
KnowBeのダウンロードページで手動ダウンロードしたものと同一内容です。文字コードはShift-JIS(Excelで「データ→テキストから」でShift-JIS指定でインポート)。
全アカウントの成功/失敗と取得件数が記録されます。失敗した場合はエラー内容も記載されるので、ログイン情報の修正に使えます。
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_outputExcelで作って「CSV UTF-8」で保存。一番簡単です。
name,email,password
sample_A_東京,sample-a@example.com,password123
sample_B_東京,sample-b@example.com,password456
[
{
"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.jsがインストールされていません。https://nodejs.org/ からインストールしてください。
- ネットワーク接続を確認
- もう一度実行すれば、既にダウンロード済みの請求書類はスキップされるので途中から再開できます
- 名簿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が必要です。
- ブラウザで
https://mgr.knowbe.jp/v2/にログイン - 利用者一覧ページで
get_user_ids.jsをコンソール実行 → ユーザーID一覧を取得 - 同じページでiframe方式のスクリプトを実行 → 各ユーザーの詳細データを抽出
python3 create_csv.pyでCSV生成
詳細は各スクリプトのコメントを参照。1アカウントあたり10〜15分かかるため、複数店舗にはバッチ方式を推奨します。
- A型とB型は別アカウント: KnowBeでは同じ事業所でもA型・B型でログイン情報が異なります。CSVには両方とも記載してください
- リクエスト間隔: サーバー負荷軽減のため300msの間隔を空けています。この値の変更は推奨しません
- 個人情報: 取得データには利用者の個人情報が含まれます。適切に管理してください
- アカウント情報: accounts.csv にはログイン情報が含まれます。共有フォルダに放置しないでください