Google Driveの書類不足をGASで自動チェック|エラーが出ないほうが怖いと分かった話

作業着姿の男性が、書類の一覧と赤く色付けされたチェック結果が表示されたノートパソコンの画面を、腕を組んで見つめている。机の上には書類の束が積まれている。 AI活用

皆さんこんにちは、横浜で清掃業をしているヤスです。

「あの案件、報告書って出したっけ?」
「請求書、フォルダに入れた気がするけど…」

仕事の書類をGoogleドライブで管理していると、こういう「たぶん大丈夫」が積み重なっていきませんか。フォルダを1つずつ開けば確かめられる。でも、それを全案件でやる気力はない。私もそうです。

この記事では、案件ごとのフォルダに必要な書類が揃っているかを自動で判定し、足りないものを色分けで一覧にする仕組みの作り方を紹介します。使ったのはGAS(Google Apps Script=Googleのサービスを自動で動かすための無料の仕組み)だけ。今回はあえてAIを使っていません。

そして途中で、エラーが一切出ないまま、全件が間違った結果になるという、ちょっと背筋が冷える失敗もしました。むしろこの記事で一番伝えたいのはそこです。

※登場する会社名・人名・案件データはすべて架空のダミーです。


完成形:案件ごとの書類の過不足が色で分かる

Googleスプレッドシートの「不足書類チェック」シート画面。案件ごとに「OK」「不足あり」「要確認」といった判定が色分けされ、不足している書類名(報告書や依頼書など)や、該当フォルダへ直接飛べるリンクが一覧で分かりやすく整理されている様子。

判定は3色です。

  • 赤:不足あり/フォルダなし
  • オレンジ:要確認(同じ種類の書類が2つある、など)
  • 緑:OK

わざと問題を仕込んだダミー案件6件で試した結果がこちらです。

案件番号ステータス仕込んだ問題判定結果
2026-004請求済なし(正常)OK(ファイル5件)

| 2026-006 | 完了 | 報告書がない | 不足あり(報告書) |
| 2026-012 | 請求済 | 請求書がない | 不足あり(請求書) |
| 2026-013 | 受注済 | 見積書が2つ | 要確認(見積書2件) |
| 2026-011 | 施工中 | ファイル名がバラバラ | 不足あり(依頼書・発注書)、分類不能2件 |
| 2026-016 | 見積中 | フォルダがない | フォルダなし |

6件とも、狙ったとおりに引っかかりました。

ビフォーアフター:[要確認:導入前に確認にかかっていた時間と、導入後の時間]

このシリーズについて

クラウドワークスで見かけた設備工事会社の業務効率化案件がきっかけです。稼働条件が合わず応募は見送りましたが、書かれていた業務を練習として1つずつ作っています。今回は案件の依頼内容5番目「対応漏れ・不足書類の検出」にあたります。

  • 前編:請求漏れをスプレッドシートで防ぐ仕組みをGASで作ってみた記録[要確認:URL]
  • 後編:メールからの案件情報抽出[要確認:正式タイトルとURL]

今回、AIを使わなかった理由

後編ではAIを使いました。メールの文面は人によってバラバラで、決まった形がないからです。

でも今回やりたいのは「ファイル名に特定の文字が入っているか」を見るだけ。これならGASだけで足ります。

ファイル名がバラバラでも、AIに書類の中身を読ませれば判定はできます。技術的には。それでもやらなかった理由は3つです。

  1. 費用がかかる
  2. 書類の中身を外部のAIに送ることになる
  3. ファイル名を揃えるルールを作るほうが、根本的な解決だから

AIを使うこと自体を目的にしない。これは自分の中で大事にしたい判断でした。


作り方:6つのステップ

ステップ1:既存の「案件管理シート」があるスプレッドシートに追加する

新しいスプレッドシートを作ってはいけません。この仕組みは案件管理シートの「案件番号」と「ステータス」を読みに行くからです。私は前編で作った同じスプレッドシートに、3本目のスクリプト(プログラムの小さな単位)として追加しました。1枚の案件管理シートを、3つの仕組みが共有している形です。

ステップ2:ドライブのフォルダ構成を決める

Googleドライブに「案件書類」フォルダを作り、その直下に案件番号と同じ名前のフォルダを置きます。「直下に」が大事です。理由はつまずきポイントで話します。

案件書類/
├── 2026-004/
├── 2026-006/
├── 2026-011/
└── …

ステップ3:ステータスごとに必要な書類を決める

全案件に同じ書類を求めると、見積中の案件に「報告書がない!」と言い出して、使い物になりません。だから進み具合で変えます。

ステータス必要な書類
見積中依頼書
受注済・施工中依頼書、見積書、発注書
完了+報告書

| 請求済 | +請求書 |

この表は設備工事会社を想定した、私なりのたたき台です。実際に使うなら、現場の担当者と決めるべき部分だと思います。

ステップ4:ファイル名のキーワードで書類の種類を判定する

使うキーワードは5つだけです。

依頼 / 見積 / 発注 / 報告 / 請求

どれも含まれないファイルは「分類不能」として別枠に出します。この枠を作らないと、名前がバラバラなファイルが全部「なし」扱いになり、誤検出だらけになるからです。

ステップ5:重複は「判断しない」

同じ種類の書類が2つ以上あったら、「重複の可能性」として知らせるだけにしました。どちらが最新かはAIにも判断できません。そこは人が見ます。

ステップ6:ダミーデータでテストする

前編で作った架空の案件管理表を使い、ドライブに案件フォルダを5つ作って、わざと問題を仕込みました(完成形の表のとおりです)。

後編では「添付ファイルを試す材料を用意し忘れる」という反省がありました。なので今回は、試したい機能の数だけ材料を用意することを意識しています。


つまずきポイント:3回止まりました

① また新しいスプレッドシートに作ってしまった

実行した瞬間、「案件管理シートが見つかりません」。

……前編でも、シート名が「シート1」のままで同じエラーを出しています。同じところで2回つまずきました。ステップ1をわざわざ一番上に書いたのは、このためです。

② zipを解凍したらフォルダ名が文字化け

ダミー書類をzip(複数のファイルを1つにまとめた圧縮ファイル)で受け取って解凍したら、フォルダ名が「譯井サカ譜ヶ髪」のような謎の文字に。Windowsの標準の解凍機能と、UTF-8(文字をデータにするときのルールの一種)の相性の問題でした。日本語のファイル名を扱うときの落とし穴です。

③ エラーなしで、全件「フォルダなし」(一番の学び)

これが本題です。

実行すると、6件すべてが「フォルダなし」。エラーは一切出ていません。仕組みとしては、何事もなく正常に終わっています。

原因は、解凍してアップロードする途中で、「案件書類」の中にもう一つ「案件書類」フォルダができていたことでした。

案件書類/
└── 案件書類/     ← 1階層ずれていた
    ├── 2026-004/
    └── …

コードは「案件書類」の直下で案件番号のフォルダを探します。1階層深いところにあると、見つけられません。

怖いのはここからです。「フォルダが見つかりません」は、エラーではなく正常な判定結果でもあるんです。2026-016のように本当にフォルダがない場合も、同じ結果になります。結果の表だけを見ても、「本当にない」のか「探す場所が間違っている」のか、区別がつきません。

気づけたのは、ログ(プログラムが動いた記録)に**「案件フォルダ数:1」**と出していたからでした。

5つあるはずなのに、1つしか見えていない。この数字で「あ、おかしい」と分かりました。

教訓:エラーで止まってくれるほうが、まだ親切。静かに間違った結果を返すほうがずっと怖い。判定の仕組みには「何件見つけたか」を必ずログに残す。


一番うれしかった判定:2026-011

「一番うれしかった判定:2026-011」という見出しのついたGoogleドライブの画面。GASの自動処理によって「案件書類」の中に「2026-011」という案件番号のフォルダが作られ、「佐藤様_御見積.pdf」などの添付ファイルが自動で保存されている様子。

ファイル名がバラバラな案件です。

スキャン20260915.pdf
佐藤様_御見積.pdf
IMG_4821.pdf

「佐藤様_御見積.pdf」はルールどおりの名前ではありません。でも「見積」の2文字が入っていたので、ちゃんと見積書として拾えました。

一方、「スキャン20260915.pdf」と「IMG_4821.pdf」は拾えず、分類不能に。これは正しい動作です。名前から分からないものは、人が中身を見るしかありません。

ここで思ったのは、命名規則をガチガチに揃えなくても、ファイル名に1語入れる習慣さえあれば動くということ。「揃える」より「1語入れる」のほうが、現場ではずっと現実的です。


清掃業ならこう使える

この仕組みも前編と同じ、「一覧を読む → 条件で拾う → 知らせる」の型です。変わったのは、判定の材料がシートの中だけでなく、ドライブのファイルになったこと。

私の本業に置き換えるなら、定期清掃のお客様ごとに「契約書・作業報告書・請求書」が揃っているかのチェックにそのまま使えそうです。


まとめ

  1. 既存の案件管理シートに追加する
  2. 「案件書類」の直下に案件番号フォルダを置く
  3. ステータスごとに必要書類を決める
  4. 5つのキーワードで判定し、分類不能は別枠に
  5. 重複は判断せず、人に知らせる
  6. 問題を仕込んだダミーでテストし、「見つけた件数」をログに残す

いきなり仕組みを作らなくて大丈夫です。最初の一歩は、今ある書類フォルダのファイル名に「見積」「請求」のような1語を足してみること。 それだけで、あとから自動化できる土台ができます。

良い練習になり結構便利な物が作れたと思います。GASだけでここまでできるとは知らなかったです。

前回作った物はチャットGPTやLINEと連携できたりとビックリでした。

次回予告

次回はまだ検討中なので何にするかはお楽しみで。

関連記事

コメント

タイトルとURLをコピーしました