영어학원 가입신청서, Gemini+ Google 앱스크립트로 자동화 해봤어요 ✍️

소개

지피터스 수업 시간에 배운 내용 중 Google Gemini + Apps Script를 활용하여 설문지를 만들고, 해당 입력값을 Google Sheets에 자동 저장하는 워크플로우를 실습하게 되었습니다.

그런데 이 내용을 듣다가 문득 떠오른 것이 있었어요!

제 아내가 운영 중인 초중고 대상 영어학원에서는 기존에 Tally를 활용해 가입신청서를 만들고, Notion에 연동해 학생 DB를 관리하고 있었는데요. 이번 기회에 Google 생태계만으로도 비슷한 흐름을 만들 수 있을까? 싶어서 직접 테스트해보았습니다 😄

진행 방법

사용한 도구

  • Gemini

  • Google Apps Script (자동화 스크립트)

  • Google Sheets (DB 역할)

구현 과정

  1. Gemini로 가입 신청 폼 제작

    • 이름, 학년, 연락처, 희망 수업 요일 등 기본 필드 포함

  1. 스프레드시트와 연결

    • 설문지 응답 결과가 자동으로 시트에 기록되도록 설정

  2. 앱스크립트 작성

    • 예: 신규 응답이 들어올 때 Slack 알림 전송, 특정 시트로 자동 분류, 중복 신청 방지 등

/**
 * 잼 영어 학원 가입 신청서 자동 생성 스크립트
 */
function createEnglishAcademyEnrollmentForm() {
  var form = FormApp.create("잼 영어 학원 가입 신청서 (상담 예약)");
  form.setDescription("안녕하세요! 잼 영어 학원입니다. \n정확한 학습 진단과 상담을 위해 아래 정보를 입력해 주세요. 작성해주신 내용을 바탕으로 정성껏 상담 준비를 하겠습니다.");

  var isRequired = true;

  // 1. 학생 이름
  form.addTextItem().setTitle("학생 이름").setHelpText("예시: 홍길동").setRequired(isRequired);

  // 2. 학교 이름
  form.addTextItem().setTitle("학교 이름").setHelpText("예시: 대청초").setRequired(isRequired);

  // 3. 학생 학년
  form.addMultipleChoiceItem()
      .setTitle("학생 학년")
      .setChoiceValues(["초등 1학년", "초등 2학년", "초등 3학년", "초등 4학년", "초등 5학년", "초등 6학년", "중학교 1학년", "중학교 2학년", "중학교 3학년", "고등학교 이상"])
      .setRequired(isRequired);

  // 4. 학부모님 연락처
  form.addTextItem().setTitle("학부모님 연락처").setHelpText("예시: 010-1234-5678").setRequired(isRequired);

  // 5. 수강 희망 과목
  form.addMultipleChoiceItem()
      .setTitle("수강 희망 과목")
      .setChoiceValues([
        "A. 파닉스", 
        "B. 초등 저학년", 
        "C. 초등", 
        "D. 예비 중", 
        "E. 중/고등 프로그램 (내신대비 O)", 
        "F. 중/고등 프로그램 (내신대비 X)"
      ])
      .setRequired(isRequired);

  // 6. 수강 희망 횟수
  form.addMultipleChoiceItem()
      .setTitle("수강 희망 횟수 (주 1주 기준)")
      .setChoiceValues(["주 3회", "주 5회"])
      .setRequired(isRequired);

  // 7. [추가] 영어 학습 기간 및 경험
  form.addParagraphTextItem()
      .setTitle("영어 학습 이력 (추가 문항)")
      .setHelpText("학습 기간, 이전에 다녔던 학원이나 학습지 등 참고할 만한 내용을 적어주세요.");

  // 8. 희망 상담 날짜
  form.addDateItem().setTitle("희망 상담 날짜").setRequired(isRequired);
  
  // 9. [추가] 상담 희망 시간대
  form.addCheckboxItem()
      .setTitle("희망 상담 시간대 (복수 선택 가능)")
      .setChoiceValues(["오전 (10:00~12:00)", "오후 (14:00~17:00)", "저녁 (17:00 이후)"])
      .setRequired(isRequired);

  // 10. 상담 동기
  form.addMultipleChoiceItem()
      .setTitle("상담 동기 (잼 영어를 알게 된 경로)")
      .setChoiceValues(["지인 소개", "입간판을 보고", "네이버 플레이스", "인스타그램", "블로그", "주변 소문"])
      .setRequired(isRequired);

  // 11. 특이사항
  form.addParagraphTextItem()
      .setTitle("특이사항 (자세하게 기재하실수록 학습에 도움이 됩니다.)")
      .setHelpText("영어 학습 목표, 개선하고자 하는 부분, 학습량 등 상담 시 참고할 내용을 자유롭게 적어주세요.");

  // 12. 만 14세 미만 법정대리인 정보
  form.addTextItem()
      .setTitle("만 14세 미만 정보제공 동의 - 법정대리인 성함 및 관계")
      .setHelpText("예시: 홍길동, 부(또는 모)")
      .setRequired(isRequired);

  // 13. 개인정보 수집 동의
  var privacyText = "학원 개인상담 자료 활용\n" +
                    "[수집 항목] 학생 이름, 학년, 학교, 학부모 연락처\n" +
                    "[보유 기간] 상담 목적 달성 시까지 (요청 시 즉시 파기)\n" +
                    "동의를 거부할 경우 상담 서비스 제공이 제한될 수 있습니다.";
  
  form.addMultipleChoiceItem()
      .setTitle("개인정보 수집 및 이용 동의")
      .setHelpText(privacyText)
      .setChoiceValues(["동의함", "동의하지 않음"])
      .setRequired(isRequired);

  Logger.log('신청서 생성 완료!');
  Logger.log('편집 링크: ' + form.getEditUrl());
}

https://forms.gle/Bh2JbEAHxDuZ9AVB7

한국어 신청서 스크린샷

한국어 신청서 스크린샷

한국어 시험 스크린샷

결과와 배운 점

✅ 좋았던 점

  • Google 설문지 → 시트 연동이 매우 직관적이고 빠름

  • Apps Script로 Slack 알림, 자동 태깅 등 다양한 자동화 시도 가능

  • 기존 Tally 대비 자유도 높음 (직접 코드 수정 가능하니까요!)

🤔 아쉬웠던 점

  • UI나 폼 디자인은 Tally 쪽이 더 직관적이고 예쁨

  • Notion과의 연동은 Tally가 훨씬 간편함

  • 앱스크립트는 처음 다뤄보면 약간 진입장벽 있음 (에러도 많았어요 😂)

한국어 텍스트가 있는 검은 화면

🔜 앞으로 해보고 싶은 것

  • 제미나이가 추천해준 것 처럼 양식을 학원 관련 이미지로 디자인 요소 추가

  • Google Apps Script로 자동 문자 발송 or 카카오톡 기능 붙이기 기능 추가

  • Notion과 Google Sheets 간 양방향 연동 실험

  • 학부모 대상 ‘출결 확인 폼’ 등으로 확장 적용!

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요