中小企業では、いまだに紙やファックスでの有給申請が行われているケースが少なくありません。
- 承認フローが不透明
- 集計や転記が手作業でミスが発生しやすい
- 誰がいつ休むのか管理者しか把握できず、共有が遅れる
その結果、ダブルブッキングやシフト調整の遅れが起こり、現場の効率を下げてしまいます。
解決方法
これらの課題は、Googleフォーム × スプレッドシート × Googleカレンダー を組み合わせることで解決できます。
- 有給申請をGoogleフォームで受け付ける
- 回答をスプレッドシートに自動集計
- スプレッドシートの内容をGoogleカレンダーに転記
この仕組みにより、申請内容がリアルタイムでカレンダーに反映され、誰でもすぐに休暇予定を確認できます。
シフト調整や業務分担もスムーズになり、業務効率が大幅に改善します。
手順
- step1Googleフォームで有給申請を受け付ける
- 「氏名」「休暇開始日」「休暇終了日」を入力できるようにフォームを作成
- 回答先をスプレッドシートに設定
👉 詳しい作り方はこちら
- step2スプレッドシートでデータを整える
- フォームの回答が保存されるシートを確認
- 氏名・開始日・終了日 の列番号をメモしておく
- step3Google Apps Script(GAS)を設定する
スプレッドシートの 拡張機能 → Apps Script を開き、以下のコードを貼り付けます。
function addToCalendar() { // ① スプレッドシートのシート名を変更 const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("フォームの回答1"); // ② 最終行(直近の申請データ)を取得 const lastRow = sheet.getLastRow(); const rowData = sheet.getRange(lastRow, 1, 1, sheet.getLastColumn()).getValues()[0]; // ③ 列番号を自分のフォームに合わせて変更 // 例:氏名がB列なら [1]、開始日がC列なら [2]、終了日がD列なら [3] const name = rowData[1]; // 氏名 const startDate = new Date(rowData[2]); // 開始日 const endDate = new Date(rowData[3]); // 終了日 // ④ カレンダーIDを自分のものに変更 // 「Googleカレンダー → 設定 → カレンダーの統合 → カレンダーID」で確認 const calendar = CalendarApp.getCalendarById("あなたのカレンダーID"); // ⑤ イベントのタイトルを自由にカスタマイズ可能 calendar.createEvent(name + " 有給休暇", startDate, endDate); } - step4カレンダーIDを取得して貼り付ける
- Googleカレンダー → 設定 → 「カレンダーの統合」からカレンダーIDをコピー
- 上記コードの
あなたのカレンダーIDに貼り付け
- step5タイトル
- Apps Script画面 → 「トリガー」を開く
- 関数に
addToCalendarを選択 - イベントの発火条件を「フォーム送信後」に設定
- これで申請があれば自動的にカレンダーへ反映!
- step6トリガーを設定する
- Apps Script画面 → 「トリガー」を開く
- 関数に
addToCalendarを選択 - イベントの発火条件を「フォーム送信後」に設定
- これで申請があれば自動的にカレンダーへ反映!
まとめ
Googleフォームとスプレッドシート、そしてGoogleカレンダーを組み合わせることで、有給申請からスケジュール共有まで完全デジタル化できます。
- 紙やFAXの手間を削減
- 集計や転記のミスを防止
- 休暇予定がリアルタイムに共有され、シフト調整もスムーズ
👉 次は「残り有給日数を自動計算し、通知する仕組み」を紹介しています。
(リンク:「Googleスプレッドシートで有給残日数を自動計算&通知する方法」)


