皆さんこんにちは、横浜で清掃業をしているヤスです。
スキャナーやスマホで取り込んだPDFが、「スキャン20260915.pdf」「IMG_4821.pdf」といった名前でフォルダにたまっていく。どの案件の何の書類なのかは、1つずつ開かないと分からない。開いて中身を確かめ、名前を付け直して、案件のフォルダへ移す。
このシリーズの第3話では、案件フォルダに足りない書類を見つける仕組みを作りました。そのとき、名前から中身が分からないファイルは「分類不能」として弾くしかありませんでした。
今回は、弾かれたのと同じ名前のPDFを、中身を読んで正しい名前に変え、案件フォルダへ振り分けられました。振り分けたあとで第3話の仕組みを動かし直すと、「分類不能」が2件から0件に変わりました。いちばん大事にしたのは「判定できないものは動かさない」ことです。
※この記事に登場する会社名・人名・金額は、すべて練習用に作った架空のダミーです。実在のお客様や実際の取引の話ではありません。
完成形:中身を読んで、名前を変えて、案件フォルダへ移す
「未整理」フォルダにPDFを置く
↓
PDFの中身をテキストにする(第5話と同じ方法)
↓
AIが判定する(案件番号はどれか/書類の種類は何か)
↓
「2026-018_見積書.pdf」の形に名前を変える
↓
該当する案件フォルダへ移動する
↓
結果を「ファイル整理」シートに記録する
使ったのは、GAS(Googleのサービスを自動で動かすためのプログラム)、Drive API(Googleドライブのファイルをプログラムから扱うための窓口)、OpenAI API(プログラムからAIを呼び出すための窓口)、Googleスプレッドシート、Googleドライブです。
ダミーのPDF6件を試した結果は、振り分け4件、未整理のまま2件でした。
見積_山田様_最終版.pdf → 2026-013/2026-013_見積書.pdf
20260925_報告.pdf → 2026-018/2026-018_報告書.pdf
スキャン20260915.pdf → 2026-011/2026-011_見積書.pdf
IMG_4821.pdf → 2026-011/2026-011_発注書.pdf
請求書.pdf → 案件番号が不明(未整理のまま)
2026-018_見積書.pdf → 重複の可能性(未整理のまま)
矢印の左が元の名前、右が移動先のフォルダと新しい名前です。

きっかけはこれまでと同じ、クラウドワークスで見た設備工事会社の募集です。応募は見送りましたが、書かれていた業務を練習教材として1つずつ作っています。今回は「ファイル管理」の章(保存先の判定、書類の自動分類、ファイル名の統一)にあたります。
第3話の宿題:「名前を揃える側」を作る
第3話の不足書類チェックは、ファイル名にキーワードが入っているかどうかで書類を見分ける仕組みでした。そのとき、私はこう書いています。
ファイル名にキーワードが入っていれば拾える。入っていなければ人が目で見るしかない。
ファイル名を揃えるルールを作るほうが根本的な解決だ。
第3話の仕組みが「検出する側」なら、今回作ったのは、その前にファイル名を揃える「整える側」です。第3話はファイル名だけを見ればよかったのでGASで足りましたが、今回は中身を読むのでAIを使っています。
作り方①:判定できないものは、動かさない
ここを今回いちばん大事にしました。
案件番号が読み取れない。書類の種類が分からない。該当する案件フォルダがない。こういうファイルを推測で動かすと、書類が行方不明になります。
そこで、判定できなかったファイルは「未整理」フォルダに残したまま、シートに「判定できなかった理由」を記録するだけにしました。第3話の「分類不能」、第4話の「該当なし」と同じ考え方です。
作り方②:同じ名前のファイルがあれば、移動しない
第4話で、案件番号が重複して前の見積書PDFを上書きで消してしまった失敗があります。同じことを繰り返さないよう、今回は上書きを一切しません。移動先に同じ名前のファイルがあれば、移動を中止します。
旧版かもしれないし、単なる重複かもしれない。どちらかは人が見るところです。募集にも「旧版ファイルの検出」とあったので、検出だけして判断は人に回しました。
作り方③:AIへの指示は3つだけ
AIに渡した指示は、次の3つです。
- 案件番号は「2026-018」のような形。なければ null(値なし)。日付や電話番号を案件番号にしない
- 書類の種類は、依頼書・見積書・発注書・報告書・請求書の5つから選ぶ。判断できなければ null
- 推測で埋めない。null にした場合は理由を書く
作り方④:わざと困る名前のPDFを6件用意する
「未整理」フォルダに、わざと困る名前のダミーPDFを置きました。
| ファイル名 | 中身 | 狙い |
|---|---|---|
| スキャン20260915.pdf | 2026-011の見積書 | 名前から何も分からない |
| IMG_4821.pdf | 2026-011の発注書 | 同上 |
| 見積_山田様_最終版.pdf | 2026-013の見積書 | 名前はあるが規則が違う |
| 20260925_報告.pdf | 2026-018の報告書 | 名前に案件番号がない |
| 請求書.pdf | 案件番号の記載なし | 判定できない |
| 2026-018_見積書.pdf | 既存と同じ名前 | 重複の検出 |
上の2つは、第3話で「分類不能」として弾かれたのと同じファイル名です。あのとき拾えなかったものを、今回は拾えるかを試しました。
請求書.pdf は宛先が「お客様各位」で、案件番号がありません。ただし日付「2026/09/25」と電話番号「045-000-0000」は書いてあります。これらを案件番号として拾わないかのテストです。
結果:「分かるところだけ答える」ができていた
名前から何も分からなかった2件も、中身を読んで2026-011の見積書と発注書に振り分けられました。特に良かったのが 請求書.pdf です。AIの返答はこうでした。
{"caseNo":null,"docType":"請求書","reason":"案件番号の形式に合う番号が書類内に記載されていないため"}
JSON(データを決まった形で書き表す書き方)で返ってきています。caseNo が案件番号、docType が書類の種類、reason が理由です。
日付も電話番号も書いてあるのに、どちらも案件番号として拾いませんでした。書類の種類は「請求書」と正しく判定しつつ、案件番号だけを null にしています。片方だけ分かる状態を、そのまま返してくれました。

2026-018_見積書.pdf は、移動先に同じ名前があったので「重複の可能性」として残りました。
振り分けたファイルは、シートの備考欄に「『スキャン20260915.pdf』から名前を変えました」と元の名前を残しています。後から追跡できるようにするためです。
[スクショ:実行ログ(振り分け4件、未整理のまま2件)]
第3話の仕組みを、もう一度動かしてみた
振り分けが終わったあと、第3話の不足書類チェックを実行し直しました。すると、2026-011の判定が変わりました。
| 第3話のとき | 今回 | |
|---|---|---|
| 不足 | 依頼書、発注書 | 依頼書 |
| 分類不能 | 2件 | 0件 |
分類不能が消え、発注書が正しく認識されました。第3話で「人が目で見るしかない」と書いた状態が、解消されたことになります。

第3話の仕組みは、何も書き換えていません。変わったのは、フォルダの中のファイル名だけです。
「検出する側」だけでは、名前がバラバラなファイルを前に止まってしまいました。「整える側」だけでは、何が足りないのかまでは分かりません。2つがそろって、片方の弱点をもう片方が埋める形になりました。
順番が逆なのも面白いところです。先に「検出する側」を作ったから弱点が分かり、後から「整える側」を作りました。
つまずき①:前回のダミーが、今回のテストの邪魔をした
実は、1回目はこの結果になりませんでした。
振り分け自体は成功しているのに、第3話のチェックを動かすと、2026-011はまだ「分類不能」のまま。しかも見積書が2件あるとして「重複の可能性」まで出ています。
原因は、第3話で2026-011フォルダに入れた「スキャン20260915.pdf」「IMG_4821.pdf」が、中身のないダミーのまま残っていたことでした。今回は同じ名前のPDFを未整理フォルダに用意していたので、振り分けは成功したのに、古いほうが残って分類不能を出し続けていました。
見積書の重複は、第3話で入れた「佐藤様_御見積.pdf」が残っていたせいでした。新しく入った「2026-011_見積書.pdf」と合わせて、見積書が2件になっていたわけです。
ダミーの名前を第3話と揃えたのは自分です。完全に自分のミスでした。古い3件を削除したら、想定どおりの結果になりました。
テスト用のデータが、次のテストの邪魔をすることがある。 練習を重ねるほど、前回までのダミーが積み上がっていきます。
つまずき②:2026-013の見積書が3件になった
2026-013のフォルダには、元から見積書のv2と最終版がありました。そこに今回 2026-013_見積書.pdf が加わり、同じ種類の書類が3つ並びました。
同じ名前ではないので、移動は止まりません。ただ、これは正しい動作です。第3話のチェックの「重複の可能性」がちゃんと働いて、要確認として出てきました。
安全上の注意:最初は控えのあるファイルで試す
この仕組みは、実際にファイルを移動し、名前も変えます。すでにあるファイルそのものに手を加える仕組みです。
最初は必ず、控えのあるファイル(コピーしたものなど)で試してください。移動先を間違えたり、元のファイルを見失ったりしても、控えがあれば戻せます。私も今回は、すべて練習用のダミーPDFで試しています。
まとめ:判定できないものは動かさない
今回の手順をまとめます。
- 「未整理」フォルダのPDFを、中身ごとテキストにする
- AIには案件番号と書類の種類だけを答えさせる。分からなければ null と理由
- 両方そろったものだけ、「案件番号_書類の種類.pdf」に名前を変えて移動する
- 判定できないもの、同じ名前があるものは動かさず、理由をシートに残す
- 元の名前を備考欄に記録して、あとから追えるようにする
最初の一歩としては、自分のパソコンやドライブで、名前を見ても中身が分からないファイルを3つ探してみることをおすすめします。それを開かずに、どの案件の何の書類か言えるかどうか。言えなければ、それが「整える側」の出番です。
私の本業の清掃業に置き換えるなら、現場写真や作業報告書を、現場ごとのフォルダに振り分けるのに使えそうだと考えています。地味に便利な機能ですね!
次に何を作るかは、まだ決めていません。募集に書かれていた業務のうち、残りは「日程調整」です。仕組みが増えて毎朝届くメールが3通になったので、これを1通にまとめる回も候補にしています。
関連記事
このシリーズの過去の記事です。


コメント