有給管理を自動化するツール|Googleスプレッドシート+FIFO完全ガイド
有給休暇管理の悩みと解決策
多くの会社員にとって、有給休暇の管理は意外と面倒な作業です。
- 計算ミスが起きやすい: 手書きや単純な表では、計算間違いが発生しがち。
- 失効日の把握が困難: 付与日ごとに有効期限が異なるため、「いつ、どの分が消えるのか」を追うのが大変。
- 消費順のルール: 一般的に古い付与分から消費する(FIFO)必要がありますが、手動で管理すると複雑。
そこで、GoogleスプレッドシートとGoogle Apps Script (GAS) を活用し、**「日付と増減数を入力するだけで、すべてを自動計算するツール」**を作成しました。
本ツールの開発には、AIコーディングエージェントのOpenCodeを使用し、設計から実装まで効率的に行いました。
実装されている主要機能
1. 完全自動計算
日付と付与/利用数を入力するだけで、現在の残日数がリアルタイムに更新されます。
2. FIFO(先入れ先出し)消費ロジック
労働基準法等の一般的な運用に基づき、**「古い付与分から優先的に消費」**される仕組みを実装しています。これにより、失効リスクを最小限に抑えた正確な管理が可能です。
3. 自動失効管理
付与日から2年後の失効日を自動的に計算します。
4. インテリジェント・ステータス判定
以下の条件に基づき、現在の状況を自動判定して表示します。
- 有効: まだ余裕がある状態。
- 期限間近: 失効まで30日を切っている状態(注意喚起)。
- 使用済: その付与分をすべて使い切った状態。
- 失効済: 期限が過ぎて消滅した状態。
ツール構成と設定方法
スプレッドシートの構成
入力エリア(A・B列)以外はすべてGASが自動で書き込みます。
| 列 | 項目 | 入力/自動 | 内容 |
|---|---|---|---|
| A | 日付 | 入力 | 付与日または利用日 |
| B | 増減数 | 入力 | 付与は正の数(例: 10)、利用は負の数(例: -1) |
| C | 残日数 | 自動 | 全体の合計残日数 |
| D | メモ | 入力 | 備考(例: 夏休み、慶弔など) |
| F | 付与日 | 自動 | どの付与分に紐づいているか |
| G | 付与日数 | 自動 | 当時の付与数 |
| H | 使用済 | 自動 | その付与分で使った日数 |
| I | 残日数 | 自動 | その付与分の残り日数 |
| J | 失効予定日 | 自動 | 付与日から2年後の日付 |
| K | ステータス | 自動 | 有効 / 期限間近 / 失効済 など |
セットアップ手順
セットアップ方法はテンプレートからコピーする方法と、一からスプレッドシートを準備する方法があります。
テンプレートからコピーする方法
有給休暇 のテンプレートを準備しています。 ブラウザでアクセスするとテンプレートをご自身のアカウントにコピーすることができます。
コピーしたいアカウントでログインを実施してください。

ログイン後、「コピーを作成」をクリックすると、Google Driveに保存されます。

一からスプレッドシートを準備する方法
手順1:スプレッドシートの準備
- Googleスプレッドシートで新規シートを作成。
- 1行目に以下のヘッダーを入力します。
日付増減数残日数メモ(空白)付与日付与日数使用済残日数失効予定日ステータス
手順2:Apps Scriptの設定
- メニューの 拡張機能 → Apps Script を開く。
- GitHubのappsscript.jsの内容をすべてコピーして、エディタに貼り付け。
- 保存(Ctrl+S / ⌘+S)をクリック。
手順3:権限の承認
- エディタ上部の関数選択で
onOpenを選び、「実行」をクリック。 - Googleの承認画面が出るので、「権限を確認」→「詳細」→「安全ではないページに移動」→「許可」の順に進みます。
これで、スプレッドシートのメニューバーに**「有給管理」**という専用メニューが追加されます。
具体的な使い方
有給を付与する場合
- A列に日付(例: 2024/01/01)、B列に日数(例: 10)を入力。
- 自動的に新しい付与枠が作成され、残日数に加算されます。
有給を利用する場合
- A列に日付(例: 2024/03/15)、B列に利用日数(例: -1)を入力。
- 自動的に最も古い付与分から消費され、残日数が減ります。
開発後記:OpenCodeでの体験
本ツールの開発では、AIエージェントのOpenCodeを活用しました。
特に重要だったのが**「Planモード」での設計工程**です。 「FIFO(先入れ先出し)をどう実装するか」「失効日の判定条件はどうするか」という仕様を、コードを書く前にテキストベースで徹底的に詰めました。
設計が曖昧なまま実装(Buildモード)に入ると、AIが推測でコードを書いてしまい手戻りが発生しますが、**「設計を固めてから実装する」**という流れを徹底することで、ほぼ一発で動作するツールを完成させることができました。
ソースコードとライセンス
コードはGitHubで公開しています。 https://github.com/bkds-hi/paid_leave_manager
- ライセンス: MITライセンス(自由に変更・利用可能です)
- 要望・バグ報告: GitHub Issuesまでお願いします。