Googleスプレッドシートで有給管理を自動化するツールを作成しました
作成の背景
有給休暇の残日数を手動で管理するのが面倒で、計算ミスも起きやすいです。 とくに付与日ごとに有効期限が異なる場合、どの付与分が先に失効するのかを追うのは手間がかかります。
そこでGoogleスプレッドシートとGoogle Apps Scriptを使って、入力するだけで自動計算してくれるツールを作成しました。 開発にはOpenCodeを使用しました。
機能
- 自動計算 — 日付と増減数を入力するだけで残日数を自動計算
- 付与日別管理 — 各付与日ごとの残日数と使用状況を追跡
- FIFO消費 — 古い付与日から順に自動的に消費(労働基準法に準拠)
- 失効管理 — 付与日から2年後の失効日を自動計算
- ステータス表示 — 有効 / 期限間近 / 使用済 / 失効済を自動判定
スプレッドシートの構成
入力が必要なのはA・B列のみです。C・F〜K列はスクリプトが自動で計算します。
| 列 | 項目 | 内容 |
|---|---|---|
| A | 日付 | 付与日または利用日を入力 |
| B | 増減数 | 付与は正の数、利用は負の数を入力 |
| C | 残日数 | 自動計算 |
| D | メモ | 任意の備考 |
| F | 付与日 | 自動生成 |
| G | 付与日数 | 自動生成 |
| H | 使用済 | 自動生成 |
| I | 残日数 | 自動生成 |
| J | 失効予定日 | 自動生成 |
| K | ステータス | 自動生成 |
セットアップ方法
1. スプレッドシートの準備
- Googleスプレッドシートで新規スプレッドシートを作成
- 1行目に以下のヘッダーを入力します
A1: 日付 B1: 増減数 C1: 残日数 D1: メモ F1: 付与日 G1: 付与日数 H1: 使用済 I1: 残日数 J1: 失効予定日 K1: ステータス
2. Apps Scriptの設定
- メニューから 拡張機能 → Apps Script を選択
- GitHubのappsscript.jsの内容をエディタにコピー&ペースト
- 保存(Ctrl+S / ⌘+S)をクリック
3. 権限の付与
- Apps Scriptエディタで 実行 →
onOpenを選択して実行 - 承認画面が表示されたら「Review Permissions」をクリック
- Googleアカウントを選択して権限を許可
スプレッドシートに「有給管理」メニューが追加されていれば設定完了です。
使い方
有給を付与する
A列に付与日、B列に付与日数(正の数)を入力します。
A2: 2024/01/05 B2: 10
入力後、C列に残日数が自動計算され、F〜K列に付与日別の管理情報が表示されます。
有給を利用する
A列に利用日、B列に利用日数(負の数)を入力します。
A3: 2024/03/10 B3: -3
古い付与日から順に自動的に消費されます(FIFO方式)。
ステータスの判定ロジック
| 条件 | ステータス |
|---|---|
| 残日数 ≤ 0 | 使用済 |
| 失効日 ≤ 今日 | 失効済 |
| 失効日 ≤ 今日 + 30日 | 期限間近 |
| その他 | 有効 |
失効30日前になると「期限間近」と表示されるので、失効を見落とすリスクが減ります。
OpenCodeで開発して感じたこと
今回はOpenCodeを使って開発しました。
開発を通じて感じたのは、Planモードで設計をしっかり固めることの大切さです。 最初にPlanモードで「FIFO消費のロジック」「失効判定の条件」「スプレッドシートの列構成」といった仕様を詳細に詰めてからBuildモードに移ることで、手戻りなくスムーズに実装できました。
逆に設計が曖昧なままBuildモードで進めると、意図と異なるコードが生成されることもあるため、Plan→Buildの流れを意識することが重要だと感じました。
ソースコード
GitHubで公開しています。
https://github.com/bkds-hi/paid_leave_manager
MITライセンスなので自由に利用・改変できます。 バグ報告や機能要望はGitHub Issuesにてお知らせください。