소개
지피터스 수업 시간에 배운 내용 중 Google Gemini + Apps Script를 활용하여 설문지를 만들고, 해당 입력값을 Google Sheets에 자동 저장하는 워크플로우를 실습하게 되었습니다.
그런데 이 내용을 듣다가 문득 떠오른 것이 있었어요!
제 아내가 운영 중인 초중고 대상 영어학원에서는 기존에 Tally를 활용해 가입신청서를 만들고, Notion에 연동해 학생 DB를 관리하고 있었는데요. 이번 기회에 Google 생태계만으로도 비슷한 흐름을 만들 수 있을까? 싶어서 직접 테스트해보았습니다 😄
진행 방법
사용한 도구
Gemini
Google Apps Script (자동화 스크립트)
Google Sheets (DB 역할)
구현 과정
Gemini로 가입 신청 폼 제작
이름, 학년, 연락처, 희망 수업 요일 등 기본 필드 포함
스프레드시트와 연결
설문지 응답 결과가 자동으로 시트에 기록되도록 설정
앱스크립트 작성
예: 신규 응답이 들어올 때 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 간 양방향 연동 실험
학부모 대상 ‘출결 확인 폼’ 등으로 확장 적용!