経理の月末地獄、紙と手入力

毎月25日を過ぎると、オフィスに妙な緊張感が漂い始める。他部署の社員たちがそそくさと定時で帰るなか、経理部門の島だけは空気が重い。机の上に山積みになった紙の領収書と手書きの経費申請用紙。それらと睨み合いながら、一行ずつExcelへ打ち込んでいく作業が待っているのだ。10人分の交通費や接待費を手転記するだけで、月末の残業は確定する。手書きの数字は「0」と「6」の判別すら怪しい。勘定科目の間違いも日常茶飯事だ。消耗品費で申請すべきものを。平気で接待交際費として上げてくる社員が後を絶たありません。
営業部の鈴木から提出された申請書には。接待交際費の欄に「ボールペン替芯 300円」と書かれていた。ため息をつきながら内線電話をかけたが。「今商談中なので後にしてくれ」とガチャ切りされた。手元には未処理のレシートがまだ30枚以上残っており。締め日に間に合わないかもしれない焦りで胃がギリギリと痛んです。
まず、手作業での転記は、ミスとの終わりなき戦いである。画面のセルを目で追い、手元の紙と見比べる。その往復運動で夕方には目の焦点が合わなくなる。なぜ令和の時代に、紙とハンコと手打ちのExcelに縛られているのか。原因はシステム不在というよりも。現状のやり方を変える余裕すらない圧倒的なリソース不足にあった。
手入力経費精算の悪魔の仕組み
手入力による経費精算は、誰一人として得をしない悪魔の仕組みである。経理が苦しんでいるのは氷山の一角にすぎない。現場の申請者側にも、膨大な隠れコストが発生している。紙に書き込み、のりでレシートを貼り付け、経理の机まで歩いて提出する。不備があれば電話で呼び出され、書き直しを要求されるのです。
これこそがダブルコスト構造の正体である。申請者側で発生した小さなエラーが、経理側で致命的な遅延を引き起こす。特に「交通費」「接待費」「消耗品費」の3つは。判断に迷う申請者が続出する魔の勘定科目だ。タクシー代を交通費に入れるべきか、接待交際費に入れるべきか。現場の営業マンが悩む数分間と、経理がそれを訂正する数十分間。この不毛なやり取りを根絶するには、ルールを教え込むのではなく。システムで入力そのものを制限するしかなかった。
Googleフォームで申請ミス防止と効率化

次に、入力段階でのエラーを物理的に防ぐ。その第一歩として、誰もが使い慣れているGoogleフォームを導入した。紙の申請書を廃止し、すべてのデータをクラウド上の共通の入り口から吸い上げる。設定するフィールドは5つ。「日付(日付型)」「勘定科目(プルダウン)」「精算金額(数値)」「支払先・内容(記述式)」「領収書画像(ファイルアップロード)」です。
勘定科目をテキスト入力ではなくプルダウンにしたのには明確な理由がある。自由入力欄はミスの温床だ。全角半角の揺れ、謎の独自科目、単なる変換ミス。これらすべてを、選択肢を固定することで事前にブロックする。スマートフォンからでもサクサク入力できるUIは。外回りの多い営業マンに驚くほど好評だった。移動中の電車内やカフェで、レシートの写真を撮ってその場で送信する。わずか30秒で申請が完了する体験は、彼らに「後回しにする理由」を与えない。入力のハードルを下げることは。結果的に経理への提出遅れを防ぐ最強の防御策となった。
フォームデータ、GASで経理自動化

フォームで集めたデータを、どうやって経理の帳簿に落とし込むのか。ここでGoogle Apps Script(GAS)の出番となる。フォームと連携したスプレッドシートの裏側で。データを受信した瞬間に動くプログラムを仕掛けるのだ。「onFormSubmit」というトリガーを利用する。これはフォームの送信ボタンが押されたことを検知して。指定したスクリプトを自動起動させる強力な機能だ。送信された回答データから日付、勘定科目、金額を抽出し。経理用の集計シートの末尾に新しい行として自動で書き込む。
一方で、初めてonFormSubmitトリガーを設定したとき。「承認が必要です」という警告ポップアップが出て頭が真っ白になった。「詳細」から「安全ではないページへ移動」をクリックするまでの数分間。会社のGoogleアカウントを凍結させてしまったのではないかと冷や汗が止まらなかった。
GAS×関数連携で即時集計完了
スクリプトによる転記が終われば、スプレッドシート関数との連携が活きてくる。GASが書き込んだ金額データを。SUMIF関数が即座に拾い上げて部門別・科目別の合計値を算出する仕組みだ。手でExcelに打ち込んでいた頃の。転記ミスや数式の参照ズレに怯える必要はもうない。データが入力された瞬間に。月末の集計作業はすでに完了している状態を作り出したのです。
ここで一度立ち止まって考えてみてください
Pythonや自動化スキルを体系的に習得して、ITエンジニアとしてのキャリアを切り開きたい方には「Enjoy Tech!(エンジョイテック)」が選択肢のひとつです。
承認フローの自動化とパイプライン化
データ転記の自動化だけでは、業務は完結しない。経費精算には必ず「上長の承認」というステップが存在するからだ。以前は、申請用紙が届くたびに経理が内容をチェックし。問題なければ部長の席まで持っていくというアナログな回覧を行っていた。この承認依頼もGASで完全に自動化してしまった。フォームの送信と同時に、GmailApp.sendEmailメソッドを呼び出す。スクリプトの中で、先ほど抽出した申請者名、勘定科目。金額のデータをメールの本文に流し込む。
そのため、上長のメールボックスには、申請内容が整理された状態でリアルタイムに届く。わざわざスプレッドシートを開かなくても。メールを一読するだけで承認すべき内容が把握できる設計だ。連携機能を拡張し。承認者が専用ボタンを押すことでスプレッドシートの「承認状況」列に「承認済」のフラグを立てる仕組みも組み込んだ。経理部門を中継ぎのハブとして機能させるのをやめる。システムが直接、申請者と承認者を繋ぐパイプラインへと進化したのです。
100万円バス代、入力ミスの落とし穴

テスト環境での動作確認は完璧だった。満を持して全社員向けに新しい経費精算フォームのURLを公開した初日の午後。スプレッドシートを監視していた私の目に、信じられない数字が飛び込んできた。交通費の精算金額カラムに「1000000」と入力されていたのだ。近所の取引先へ向かうためのバス代が、なぜか100万円に化けている。
画面の「1,000,000」という数字を三度見した。心臓が跳ね上がり、あわてて該当の申請者である新入社員の高橋にチャットを飛ばした。「バス代100万円って。どこからどこまで乗ったの?」「すみません!テンキーの0を長押ししてしまいました!」。彼からの返信を見て、全身の力が抜けた。
しかし、人間は必ずミスをする。テンキーの連打、桁数の勘違い、予測変換の暴発。システム側がどれほど綺麗にデータを受け取る準備をしていても。入り口の制限が甘ければゴミデータはそのまま帳簿に書き込まれてしまう。フォームには数値を要求する設定はあっても。「常識的な範囲の数値」を強制する機能はない。入り口で受け取ったデータを無条件で信じてはいけない。これが、痛い目を見て学んだ絶対の真理だった。
GASで入力バリデーション!データの門番
ゴミデータを集計シートに入れないための関所が必要だ。GASのコードに手を加え。onFormSubmitの処理の先頭にバリデーション(入力値チェック)を実装した。ロジックは至ってシンプルだ。フォームから受け取った金額データをif文で判定する。もし金額が10万円以上であれば、集計シートへの転記処理をスキップさせる。そして同時に。GmailApp.sendEmailを使って申請者本人へ「金額が上限を超過しています。入力内容を確認してください」という差し戻しメールを自動送信するのです。
上限金額のチェックだけでは不十分だったため、マイナス値の入力や。数値以外の文字列が混入していないかも併せて検証する処理を組み込んだ。金額が空欄の場合はゼロとして扱うべきか、エラーとして弾くべきか。運用ルールと照らし合わせながら条件を細かくチューニングしていく。人間のうっかりミスを、システムが冷徹かつ正確に受け止めて跳ね返す。これでようやく、堅牢な自動化の仕組みが完成の形を迎えた。GASの基礎からエラーハンドリングまで体系的に学びたい方には。AmazonでGASの実務書を一冊手に取るのも良いし。侍エンジニアのようなスクールでプロから直接指導を受けるのも確実な方法です。
業務改革、不正防止と評価

さらに、バリデーションを追加してからの3ヶ月間。集計シートに不正なデータが書き込まれる事故は一度も起きていない。すべてGASの関所が弾き返し、申請者自身に修正を促してくれたおかげだ。経理の机から紙の山が消滅した。手入力の転記も、間違いの確認電話も過去のものとなった。あれほど苦痛だった月末の集計作業は。関数が自動計算した結果を最終確認するだけの数分間に縮小されたのです。
業務効率化の効果は、経理部門の外にも波及した。申請から上長の承認。そして経理の処理が終わるまでのリードタイムが劇的に短縮された。平均4.2日かかっていたプロセスが、わずか1.8日で完結するようになったのだ。ある日、すれ違った営業部長から「最近、経費の振り込み早いね。助かってるよ」と声をかけられた。日々の裏方作業が、はっきりと数字と評価になって表れた瞬間だった。
経費精算自動化の3ステップ
経理を苦しめる月末の経費精算地獄は。既存のツールを組み合わせるだけで確実に終わらせられる。第一のステップは、Googleフォームによる入力窓口の統一とプルダウンの活用だ。ここで申請者の手ブレを物理的に防ぐ。第二のステップでGASのonFormSubmitトリガーを用い。集計シートへの自動転記と承認者へのメール通知を繋ぎ込む。そして最後の第三ステップとして、GASによるバリデーション処理を追加し。システムを堅牢化する。
まず、この3ステップを構築すれば。現場の負担と経理の負担を同時に削ぎ落とす仕組みが手に入る。会社の規模が大きくなり、交通費の経路検索や複雑な税区分に対応する必要が出てくれば。freeeのようなクラウド経費精算SaaSへの移行を検討するフェーズが来るはずだ。それでも、目の前の小さな非効率を自らの手で潰した経験は。次の自動化への強力な武器となる。自身の環境でスプレッドシートとGASを開き。身近な作業からコードを書き始めてほしい。勤怠管理の自動化など。他の業務に応用するヒントは「半休×振替休日の例外処理をGASで解決した記事」でも解説している。
関連リンクとチェックリスト
著者はこうして解決の糸口を見つけた
著者も同じ境遇から始まりました。独学でここまで自動化した道のりを参考にしてみてください。
学習サービスとアンケート
このスキルを活かしてさらに前へ進むなら
Pythonや自動化スキルを体系的に習得して、ITエンジニアとしてのキャリアを切り開きたい方には「Enjoy Tech!(エンジョイテック)」が選択肢のひとつです。

