有給申請をデジタル化しても、次のような課題が残ります。
- 社員ごとの「残り有給日数」が分からない
- 管理者が手作業で計算していてミスが発生
- 本人が「自分にあと何日残っているか」把握しづらい
結果として、「残日数を超えた申請」や「消化漏れ」 が起こりやすくなります。
解決方法
GoogleスプレッドシートとGoogle Apps Script(GAS)を組み合わせることで、
- 有給の取得履歴を自動集計
- 社員ごとの残日数を自動計算
- LINEやメールで本人に通知
が可能になります。
これにより、本人も管理者も「残日数」をリアルタイムで把握でき、安心して有給を申請できる仕組みが作れます。
手順
- ラベル有給管理用のスプレッドシートを作成する
氏名 付与日数 取得日数 残日数 田中太郎 10 2 8 山田花子 12 5 7 - 「付与日数」を入力しておき、「取得日数」は申請のたびに自動で加算させます
- ラベル有給申請シートと連携させる
- 前回の記事で作成した「有給申請フォームのスプレッドシート」を利用
氏名と日数を参照して「取得日数」を更新する仕組みを組み込みます
- ラベルGoogle Apps Scriptを設定する
スプレッドシートの 拡張機能 → Apps Script を開き、以下のコードを貼り付けます。
コピペ用コード
スプレッドシートの 拡張機能 → Apps Script を開き、以下のコードを貼り付けます。 コピペ用コード function updateLeaveBalance() { // ① 申請が入るシート名 const requestSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("フォームの回答1"); // ② 有給管理シート名 const balanceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("有給管理"); // ③ 最新の申請データを取得 const lastRow = requestSheet.getLastRow(); const rowData = requestSheet.getRange(lastRow, 1, 1, requestSheet.getLastColumn()).getValues()[0]; const name = rowData[1]; // 氏名(列番号を調整) const startDate = new Date(rowData[2]); // 開始日 const endDate = new Date(rowData[3]); // 終了日 // ④ 日数を計算(開始日と終了日の日数差 +1) const days = Math.floor((endDate - startDate) / (1000 * 60 * 60 * 24)) + 1; // ⑤ 管理シートを検索して更新 const lastBalanceRow = balanceSheet.getLastRow(); const balanceData = balanceSheet.getRange(2, 1, lastBalanceRow - 1, 4).getValues(); for (let i = 0; i < balanceData.length; i++) { if (balanceData[i][0] === name) { // 取得日数を加算 balanceData[i][2] += days; // 残日数を再計算 balanceData[i][3] = balanceData[i][1] - balanceData[i][2]; balanceSheet.getRange(i + 2, 3).setValue(balanceData[i][2]); balanceSheet.getRange(i + 2, 4).setValue(balanceData[i][3]); // ⑥ LINEやメールで通知(例:Gmail) MailApp.sendEmail({ to: "社員のメールアドレス", subject: "有給残日数のお知らせ", body: name + "さんの残り有給は " + balanceData[i][3] + " 日です。" }); break; } } } - ラベル通知設定をカスタマイズする
- 上記コードの
MailApp.sendEmailを、LINE通知に変更することも可能 - LINE通知はWebhookを設定する必要があります(別記事リンクへ誘導)
- 上記コードの
- ラベルトリガーを設定する
- Apps Scriptの「トリガー」で、関数
updateLeaveBalanceを設定 - イベント発火条件を「フォーム送信後」にすれば、自動で残日数が更新&通知されます
- Apps Scriptの「トリガー」で、関数
まとめ
- 有給残日数をスプレッドシートで自動計算できるようにすると、透明性と効率が格段にアップ
- 社員は「自分にあと何日あるのか」を常に把握でき、管理者も手計算から解放
- メールやLINE通知を追加すれば、「申請→即通知」まで完全自動化
👉 関連記事:



