【中小企業向け】Googleスプレッドシートで残り有給日数を自動計算&通知する方法

自動化・GAS

有給申請をデジタル化しても、次のような課題が残ります。

  • 社員ごとの「残り有給日数」が分からない
  • 管理者が手作業で計算していてミスが発生
  • 本人が「自分にあと何日残っているか」把握しづらい

結果として、「残日数を超えた申請」や「消化漏れ」 が起こりやすくなります。


解決方法

GoogleスプレッドシートとGoogle Apps Script(GAS)を組み合わせることで、

  1. 有給の取得履歴を自動集計
  2. 社員ごとの残日数を自動計算
  3. LINEやメールで本人に通知

が可能になります。

これにより、本人も管理者も「残日数」をリアルタイムで把握でき、安心して有給を申請できる仕組みが作れます。


手順

  • ラベル
    有給管理用のスプレッドシートを作成する
    氏名付与日数取得日数残日数
    田中太郎1028
    山田花子1257
    • 「付与日数」を入力しておき、「取得日数」は申請のたびに自動で加算させます
  • ラベル
    有給申請シートと連携させる
    • 前回の記事で作成した「有給申請フォームのスプレッドシート」を利用
    • 氏名日数 を参照して「取得日数」を更新する仕組みを組み込みます
  • ラベル
    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 を設定
    • イベント発火条件を「フォーム送信後」にすれば、自動で残日数が更新&通知されます


まとめ

  • 有給残日数をスプレッドシートで自動計算できるようにすると、透明性と効率が格段にアップ
  • 社員は「自分にあと何日あるのか」を常に把握でき、管理者も手計算から解放
  • メールやLINE通知を追加すれば、「申請→即通知」まで完全自動化

👉 関連記事: