有給管理カオスと総務の疲弊

給与計算で疲弊した25日の夕方、営業部から「来週休みたいんですが。俺の有給まだ何日残ってます?」という1行だけのメールが届いた。ファイルサーバーの奥深くから重いExcel台帳を開き。過去のメール履歴と手元の紙束を突き合わせながら計算機を叩く。この1件の確認作業だけで30分が溶け、眼精疲労で目の奥がズキズキと痛み出した。
従業員20名規模の会社では、有給申請の管理がカオスに陥りやすい。申請ルートが全く統一されていないからだ。メールで送ってくる人もいれば、紙の申請書を無言で机に置いていく人もいる。有給申請が届くたびに、総務担当者はExcelの有給台帳をわざわざ開き直す。そして当該社員の名前を検索し、手作業で残日数を計算してメールで返信する。月に5件から10件の申請が重なる繁忙期は、もはや悲惨の一言に尽きる。
「今何日残っているか」という単純な質問に答えるだけで。1日の午前中が完全に消滅するのです。
まず、計算の根拠となるデータがそこかしこに散らばっているため。確認作業の負荷は指数関数的に跳ね上がる。この構造的な問題が、総務の貴重な時間を容赦なく奪い続けていた。
多経路申請と情報管理の破綻

申請が複数の経路で届くことの本当の恐ろしさは。台帳と現実の間に深刻なズレが生じる点にある。どちらかの経路での確認が漏れれば、たちまち台帳は正確性を失う。特に最悪なのが。廊下ですれ違いざまに「明日休みます」と言い残していく口頭申請の存在。後で紙に書いてもらう運用にしていたものの。営業担当者は外出続きで申請書の提出を後回しにしがちだ。結果として、台帳への転記が数日から1週間も遅れるケースが頻発した。
ある日。経理部長から「先月休んだ分が台帳から引かれていないぞ」と不機嫌そうな声で指摘された。急いでメールの受信トレイを数週間分遡り。ゴミ箱まで検索してようやく該当の連絡を発見。冷や汗をかきながらExcelを修正したが。自分の管理能力を疑われているような重い胃の痛みを一日中引きずることになった。
次に、「本当の残日数」が担当者も含めて誰にも分からない。この不透明な状態が慢性化すると、社員からの不信感も高まっていく。「以前申請したのに反映されていない」「計算が間違っているのではないか」というクレームまで飛び出すようになった。情報は一元化されて初めて価値を持つ。経路が複数ある時点で、データ管理としては既に破綻しているのです。
申請窓口のGoogleフォーム一本化

この泥沼のような状況から抜け出すため、受付窓口の完全一本化に踏み切った。解決策として選んだのはGoogleフォームである。誰でもスマートフォンから簡単にアクセスできる利便性の高さが最大の決め手となった。申請者名、取得日、取得種別、申請理由という必要最小限の項目だけを配置する。ここで最もこだわったのが取得種別の設計だ。自由記述にすると「午後から休みます」といった曖昧な入力が増え。
後でシステム処理する際に致命的なエラーの原因になる。そのため全休、午前半休、午後半休を必ずプルダウンから選ばせる仕組みを採用した。これで0.5日単位の集計を正確に行う準備が整う。新しいフォームのURLは社内の申請マニュアルやチャットの固定メッセージに掲載した。そして全社員に向けて「今後、メールや紙。口頭での有給申請は一切受け付けない」と強気の宣言を出した。例外を認めれば元の木阿弥になる。
退路を断つことでしか、古い習慣は変えられありません。
GASで有給申請・残日数管理を完全自動化

フォームを作るだけでは、結局手作業で台帳に転記する手間が残ってしまう。そこでGoogle Apps Script(GAS)を使い。完全な自動化処理を構築した。キモとなるのは「onFormSubmit」というトリガー機能である。社員がフォームの送信ボタンを押した瞬間に、裏側でプログラムが自動的に走り出す。まず、スクリプトは送信された申請者名をキーにして。有給台帳のスプレッドシート内を検索する。
該当する社員の行を見つけたら「取得済日数」の列に取得日数を加算していく。このとき。フォームのプルダウンで「半休」が選ばれていれば自動的に0.5として計算するロジックを組み込んだ。続いて「付与日数」から「取得済日数」を引き。現在の正確な残日数を計算してセルを上書きする。
ここで一度立ち止まって考えてみてください
Pythonや自動化スキルを体系的に習得して、ITエンジニアとしてのキャリアを切り開きたい方には「Enjoy Tech!(エンジョイテック)」が選択肢のひとつです。
有給残日数自動通知
一方で、これだけではない。更新された残日数の情報を添えて。GmailApp.sendEmail機能で申請者本人と上長へ確認メールを自動送信するように実装した。社員から見れば。申請した直後に「あなたの残りの有給はあと何日です」という通知が返ってくる仕組みだ。総務が重いExcelを開いて手計算する苦行は、この時点で完全に消滅した。GASをより体系的に習得したい場合は。
Amazonで実務向けのGAS解説書を一冊手元に置いておくのが早道だ。侍エンジニアのようなマンツーマン指導型スクールで実践形式で身につける方法も。確実なスキル習得の選択肢として挙げられる。
有給残日数マイナスとエラーハンドリング

完璧なシステムを作ったつもりだったが。運用開始からわずか2週間で想定外のトラブルに見舞われた。台帳の残日数がマイナスになるという異常事態の発生だ。原因は非常にシンプルだった。ある社員が自分の残日数を全く確認せずに、適当に有給申請を出したのである。初期に書いたGASのコードは。ひたすら台帳に日数を加算していく機能しか持っていなかった。
残日数がゼロ以下になる申請をブロックする検証ロジックがすっぽり抜け落ちていたのです。
朝イチで台帳を確認したとき。営業担当者の残日数セルに「-1.5」というあり得ない数字が表示されているのを発見した。心臓が跳ね上がり、一気に血の気が引く。システムが勝手にマイナス処理を済ませて本人に「申請完了」のメールまで送ってしまっており。慌てて電話をかけて謝罪と取り消しの説明をする羽目になった。
失敗から学ぶエラーハンドリング
そのため、プログラムは指示されたことしか実行しない。上限チェックを怠れば、システムは平気で論理破綻を引き起こす。この手痛い失敗を受け、すぐにコードの修正に取り掛かった。申請された日数を引いた結果が0未満になる場合。台帳への書き込みを即座に中断させる。そしてエラーを検知した際には。
GmailApp.sendEmailを利用して申請者本人と総務管理者に「残日数不足のため申請を却下しました」という警告メールを飛ばす処理を追加した。人間が犯しやすいミスをシステム側で事前に防ぐ。エラーハンドリングの威力を身をもって学ぶ体験となった。
GASで有給管理自動化
属人的な確認作業に依存していた有給管理は。明確な手順を踏むことで確実に自動化へ導ける。最初のステップは、Googleフォームを使って申請の受け口を一つに絞ること。ここで取得種別のプルダウンを用意し。半休と全休をシステムが判別できるように整える。次のステップでGASのonFormSubmitトリガーを活用し。台帳の自動更新を実装する。
リアルタイムでの残日数計算と確認メールの自動送信を組み合わせることで。総務の負担は劇的に下がる。最後の仕上げとして、残日数不足のチェックロジックを必ず組み込む。マイナス計上を未然に防ぎ、警告メールを飛ばす安全網があってこそ。システムは現場で使い物になるのです。
GASで広がる業務改善の未来
このプロセスを完了させたことで、あの忌まわしい問い合わせ対応はゼロになった。手作業による転記ミスに怯える日々は過去のものとなる。ここで構築したようなGASを活用した業務改善は。他の定型業務にもそのまま応用が効く。経費精算の手間を省く仕組み(経費精算×GoogleフォームとGASの記事)や。社内アンケートの自動集計(アンケート集計×GoogleフォームとGASの記事)。
さらには社員台帳のデータベース化(社員台帳自動更新×GoogleフォームとGASの記事)など。身近な課題から少しずつ手を付けていくことで。オフィス全体の景色は確実に変わっていくはずです。
関連リンクとチェックリスト
Am azonで評判の良いGAS関連書籍を読み込み。ネット上のサンプルコードを片っ端から試しながら、少しずつスクリプトを育てていきました。プログラミングの「プ」の字も知らなかった私でも、書籍とネットの情報を組み合わせれば、ここまでできるのだと、大きな自信につながりました。
この自動化システムを導入して以来、総務の有給管理業務は劇的に改善されました。まず、有給残日数に関する問い合わせがゼロになりました。社員はいつでも最新の残日数をシステム上で確認できるため、わざわざ総務に問い合わせる必要がなくなったのです。これにより、問い合わせ対応に費やしていた時間が丸ごとなくなり、他の重要な業務に集中できるようになりました。以前は、問い合わせへの対応だけで午前中が終わってしまうことも珍しくありませんでしたので、これは本当に大きな変化でした。
次に、月末の給与計算業務が格段に楽になりました
次に、月末の給与計算業務が格段に楽になりました。以前は、給与計算前に有給台帳の最終確認と修正に膨大な時間を費やしていました。手作業で集計していたため、どうしてもヒューマンエラーが発生しやすく、間違いがないか何度も確認する手間がかかっていたのです。しかし、GASによる自動集計システムを導入してからは、常に正確なデータがスプレッドシートに反映されるため、最終確認の時間が大幅に短縮されました。集計ミスによる再計算や、社員からの指摘で修正するといったストレスも一切なくなりました。
さらに、このシステムは、社員の有給取得状況の把握にも役立っています。年間を通して、誰がどれくらい有給を取得しているのかがリアルタイムで可視化されるため、特定の社員に有給取得が偏っていないか、あるいは取得が進んでいない社員はいないかといった状況をすぐに把握できるようになりました。これにより、会社として社員のワークライフバランスを考慮した有給取得の促進策を検討する上での貴重なデータとしても活用できるようになりました。以前は、このような全体像を把握することすら困難でしたので、これも大きな進歩だと感じています。
この有給管理の自動化をきっかけに
この有給管理の自動化をきっかけに、私はプログラミングの面白さに目覚めました。最初は「私にできるわけがない」と半ば諦めていましたが、実際に自分の手でコードを書いて、それが業務改善につながる喜びを知ってしまったのです。GASはGoogle Workspaceのサービスと連携しやすいという特性があり、普段使い慣れているGmailやスプレッドシートと組み合わせることで、さらに色々な自動化ができることを知りました。この成功体験が、私のキャリアを大きく変えるきっかけになったと断言できます。
今では、有給管理だけでなく、交通費申請の自動化や
今では、有給管理だけでなく、交通費申請の自動化や、備品在庫管理の効率化など、社内の様々な業務でGASを活用しています。プログラミングの知識は、事務職の私にとって、単なるツールではなく、業務の課題を自らの力で解決できる「魔法の杖」のような存在になりました。最初は小さな一歩でしたが、この一歩が、会社全体の生産性向上に貢献し、私自身の仕事のやりがいを大きく高めてくれたのです。もし、私と同じように日々のルーティン業務に追われ、もっと効率的な働き方を模索している方がいらっしゃれば、ぜひGASに挑戦してみてほしいと思っています。プログラミングの知識がなくても、必ず道は開けます。私も、これからも学びを深め、さらなる業務改善に挑戦していくつもりです。
著者はこうして解決の糸口を見つけた
著者も同じ境遇から始まりました。独学でここまで自動化した道のりを参考にしてみてください。
学習サービスとアンケート
このスキルを活かしてさらに前へ進むなら
Pythonや自動化スキルを体系的に習得して、ITエンジニアとしてのキャリアを切り開きたい方には「Enjoy Tech!(エンジョイテック)」が選択肢のひとつです。

