구글 워크스페이스

구글 폼즈 + 앱스 스크립트로 사내 휴가 신청 + 팀별 캘린더 자동 반영 시스템 만들기

linchpinist 2025. 7. 16. 07:45
목차

휴가 신청도 ‘문서’가 아닌 ‘흐름’이 되어야 한다
Google Forms로 휴가 신청 템플릿 구성하기
Apps Script로 자동 승인 요청 메일 보내기
승인 완료 시 Calendar에 자동 일정 등록하기
확장 구성: 연차 집계 + 미등록 알림 + 팀 대시보드
휴가 신청도 자동화되면 관리가 아닌 ‘운영’이 된다

 

 

휴가 신청도 ‘문서’가 아닌 ‘흐름’이 되어야 한다

조직에서 가장 자주 발생하는 인사 요청 중 하나는 바로 휴가 신청이다.
그러나 많은 회사에서 이 단순한 절차가 여전히 문서 작성, 이메일 첨부, 수작업 일정 등록이라는 아날로그 방식으로 이뤄진다.
결국 신청 누락, 승인 지연, 일정 충돌, 공유 실패 같은 문제들이 발생하고,
관리자와 구성원 모두가 불필요한 커뮤니케이션과 반복 작업에 시간을 낭비하게 된다.

이 문제를 해결하는 방법은 Google Forms를 통해 휴가를 신청하고,
Apps Script로 자동 승인 요청 및 캘린더 등록까지 일괄 처리되는 자동화된 흐름을 만드는 것이다.
Google Workspace 환경에서는 별도의 외부 툴 없이도 누구나 손쉽게 이런 시스템을 구축할 수 있다.

이 글에서는 Google Forms → Sheets → Gmail → Calendar → Apps Script를 연동하여
휴가 신청부터 승인, 캘린더 등록까지 자동화하는 실전형 시스템 구축 방법을 단계별로 설명한다.

 

 


Google Forms로 휴가 신청 템플릿 구성하기

Google Forms는 누구나 만들 수 있고, Google Sheets에 자동으로 연결되므로
휴가 신청 시스템의 출발점으로 가장 적합한 도구다.

휴가 신청서 폼 구성 예시
항목 유형 설명
신청자 이름 단답형 자동 캡처 또는 직접 입력
이메일 주소 단답형 승인 회신 및 캘린더 초대용
부서 드롭다운 팀 캘린더 연동용
휴가 시작일 날짜형 필수 입력
휴가 종료일 날짜형 필수 입력
휴가 유형 드롭다운 연차 / 반차 / 병가 / 기타
코멘트 단답형 또는 장문 선택 사항

Forms가 제출되면 Google Sheets에 자동으로 기록되며,
이 데이터를 바탕으로 휴가 승인, 일정 등록 자동화가 이어진다.

 

 


Apps Script로 자동 승인 요청 메일 보내기

Forms 제출 시, 관리자(또는 부서 리더)에게 자동 승인 요청 메일이 발송되도록 한다.
여기서는 Gmail과 Apps Script를 연동해 승인 요청을 구성한다.

승인 요청 이메일 자동 발송 스크립트
javascript
복사
편집
function sendVacationApprovalEmail() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("휴가신청서");
  const lastRow = sheet.getLastRow();
  const data = sheet.getRange(lastRow, 1, 1, sheet.getLastColumn()).getValues()[0];

  const name = data[0];
  const email = data[1];
  const department = data[2];
  const startDate = Utilities.formatDate(new Date(data[3]), "GMT+9", "yyyy-MM-dd");
  const endDate = Utilities.formatDate(new Date(data[4]), "GMT+9", "yyyy-MM-dd");
  const type = data[5];
  const comment = data[6];

  const approvalFormUrl = "https://docs.google.com/forms/d/승인폼_ID/viewform";

  const body = `
    [휴가 신청 승인 요청]\n
    - 신청자: ${name} (${email})\n
    - 부서: ${department}\n
    - 휴가 기간: ${startDate} ~ ${endDate}\n
    - 유형: ${type}\n
    - 코멘트: ${comment || "없음"}\n\n
    아래 승인 폼에서 처리해주세요:\n${approvalFormUrl}
  `;

  MailApp.sendEmail({
    to: "hr@yourcompany.com",
    subject: `[휴가 신청 승인 요청] ${name}`,
    body: body
  });
}


▶ 이 스크립트는 Forms 제출 시 트리거(폼 제출 후 실행)로 설정 가능
▶ 승인 담당자는 승인 전용 폼을 통해 “승인/반려” 선택

 

승인 완료 시 Calendar에 자동 일정 등록하기

승인이 완료되면 신청자의 휴가 일정이 Google Calendar에 자동 등록되어야 한다.
Apps Script로 승인 결과를 감지하고, 캘린더 이벤트를 생성할 수 있다.

일정 등록 자동화 스크립트
javascript
복사
편집
function addVacationToCalendar() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("승인결과");
  const data = sheet.getDataRange().getValues();

  for (let i = 1; i < data.length; i++) {
    const row = data[i];
    const status = row[7];
    const registered = row[8];

    if (status === "승인" && registered !== "완료") {
      const name = row[0];
      const email = row[1];
      const department = row[2];
      const startDate = new Date(row[3]);
      const endDate = new Date(row[4]);

      const calendar = CalendarApp.getCalendarById("팀_캘린더_ID");  
      calendar.createEvent(`[휴가] ${name}`, startDate, endDate, {
        description: "자동 등록된 휴가 일정",
        guests: email
      });

      sheet.getRange(i + 1, 9).setValue("완료");
    }
  }
}
팀 캘린더 ID는 Google Calendar에서 공유 캘린더를 생성한 뒤 확인 가능

일정 등록 후 중복 방지를 위해 등록 상태를 “완료”로 업데이트

 

 


확장 구성: 연차 집계 + 미등록 알림 + 팀 대시보드

이 시스템은 아래와 같은 방향으로 확장할 수 있다:

연차 자동 집계
휴가 종료 후 날짜 기준 → 연차 차감

연차 잔여일 실시간 계산 (Sheets 함수 활용)

미승인자/미등록자 알림
승인이 ‘보류’ 상태인 신청자 → 리마인드 메일 발송

등록 누락 시 관리자 알림

시각화 대시보드
팀별 월간 휴가자 현황 → Google Sheets + 차트 활용

부서별 휴가 사용량/비율 → 리포트 시트로 구성

휴가 신청부터 승인, 일정 등록까지 자동화하는 구글 워크스페이스 기반 인사 운영 시스템

 


휴가 신청도 자동화되면 관리가 아닌 ‘운영’이 된다

휴가 신청은 단순한 요청이 아니라 인사·캘린더·커뮤니케이션이 연결된 흐름이다.
Google Forms, Gmail, Calendar, Sheets, Apps Script만 활용해도
별도의 인사 시스템 없이 작고 민첩한 자동화된 휴가 운영 체계를 만들 수 있다.

지금까지 이메일 첨부와 수기로 처리하던 모든 흐름을 하나의 폼과 자동화 코드로 연결해 보자.
이 작은 자동화 하나가 인사관리의 효율성을 높이고, 조직의 생산성을 실질적으로 변화시킬 수 있다.