Google Forms + Apps Script | 제출 시 교사에게 자동 알림 이메일 — 교사용 가이드

학생이 Forms 제출하면 자동으로 제 이메일에 알림이 옵니다. Apps Script 5줄이면 됩니다.

Google Forms로 과제를 받거나 상담 신청을 받으면, 학생이 제출했는지 확인하려고 응답 탭을 계속 새로고침하게 되죠? 저도 그랬습니다. "혹시 누가 제출했나?" 하고 수시로 확인하는 게 은근히 번거롭습니다.

그런데 학생이 제출할 때마다 자동으로 이메일이 오면 어떨까요? 그것도 제출 내용이 요약되어서요. Apps Script를 쓰면 이게 가능합니다. 코딩을 전혀 몰라도 됩니다 — 아래 코드를 복사해서 붙여넣기만 하면 끝이니까요.

이 글에서 다루는 내용

  • Apps Script가 뭔가 — 구글 도구에 붙여 쓰는 자동화 기능 (무료)
  • 자동 알림 설정 — Forms에서 스크립트 편집기 열기 → 코드 붙여넣기 → 트리거 설정
  • 실전 코드 — 제출 시 교사 이메일로 응답 내용이 자동 전송되는 코드
  • 활용 사례 — 과제 제출 알림, 상담 신청 알림, 긴급 연락 알림
  • 소요 시간: 처음 설정 5분. 이후 다른 Forms에 복사 적용 1분

Apps Script가 뭔가요?

Google Apps Script는 구글이 만든 자동화 도구입니다. Google Forms, Sheets, Docs, Gmail 같은 구글 도구에 "자동으로 이런 일을 해줘"라고 명령을 붙이는 거예요.

Apps Script 없이

학생 제출 → 교사가 직접 응답 탭 확인

"누가 제출했지?" 수시로 새로고침

제출 여부를 놓치기도 함

Apps Script 있으면

학생 제출 → 교사 이메일에 자동 알림

제출 내용까지 이메일에 포함

놓칠 일 없음

중요한 건 이겁니다:

  • 완전 무료입니다. 구글 계정만 있으면 됩니다.
  • 설치가 필요 없습니다. Google Forms 안에 이미 내장되어 있어요.
  • 코딩 지식이 필요 없습니다. 아래 코드를 복사해서 붙여넣기만 하면 됩니다.
  • 구글 서버에서 실행되니까 내 컴퓨터를 켜놓을 필요가 없습니다.

Step 1. Forms에서 스크립트 편집기 열기

1

30초면 됩니다

  1. 알림을 받고 싶은 Google Forms를 엽니다.
  2. 상단 메뉴에서 점 세 개(⋮) 또는 더보기 버튼을 클릭합니다.
  3. "스크립트 편집기"(<> Script editor)를 클릭합니다.
  4. 새 탭에서 Apps Script 편집기가 열립니다.
[스크린샷] Forms 상단 메뉴 → 점 세 개 → "스크립트 편집기" 위치

편집기가 열리면 function myFunction() { }이라는 기본 코드가 보입니다. 이걸 전부 지우고 아래 코드를 붙여넣을 겁니다.

Step 2. 자동 알림 코드 붙여넣기

2

이 코드를 복사 → 붙여넣기

기존 코드를 전부 지우고, 아래 코드를 통째로 붙여넣으세요.

function onFormSubmit(e) {
  // ✏️ 아래 이메일 주소만 본인 것으로 바꾸세요
  const teacherEmail = "선생님이메일@gmail.com";

  // 제출된 응답 가져오기
  const responses = e.response.getItemResponses();
  const formTitle = e.source.getTitle();
  const timestamp = e.response.getTimestamp();

  // 응답 내용을 보기 좋게 정리
  let body = "제출 시각: " + timestamp + "\n\n";
  responses.forEach(function(item) {
    body += "▶ " + item.getItem().getTitle() + "\n";
    body += "   " + item.getResponse() + "\n\n";
  });

  // 이메일 전송
  MailApp.sendEmail({
    to: teacherEmail,
    subject: "[Forms 알림] " + formTitle + " - 새 응답",
    body: body
  });
}

코드에서 바꿀 곳은 딱 한 군데

"선생님이메일@gmail.com" 부분을 본인 이메일 주소로 바꾸세요. 따옴표는 그대로 두고 이메일만 바꾸면 됩니다. 그 외에는 아무것도 건드릴 필요 없습니다.

붙여넣은 후 Ctrl + S (또는 상단 저장 아이콘)를 눌러 저장합니다. 프로젝트 이름을 물어보면 아무 이름이나 입력하세요 (예: 알림 스크립트).

Step 3. 트리거 설정 — "제출할 때마다 실행해줘"

코드를 저장했다고 자동으로 실행되는 건 아닙니다. "학생이 Forms를 제출할 때마다 이 코드를 실행해줘"라고 설정해야 합니다. 이걸 트리거(trigger)라고 합니다.

3

트리거 설정 (1분)

  1. Apps Script 편집기 좌측 메뉴에서 시계 아이콘(⏰ 트리거)을 클릭합니다.
  2. 우측 하단의 "+ 트리거 추가" 버튼을 클릭합니다.
  3. 아래처럼 설정합니다:
설정 항목 선택할 값
실행할 함수 선택 onFormSubmit
실행할 배포 선택 Head
이벤트 소스 선택 양식에서 (From form)
이벤트 유형 선택 양식 제출 시 (On form submit)
오류 알림 설정 매일 알림 (또는 즉시 알림)

"저장"을 클릭합니다.

⚠️ 권한 승인 팝업이 나옵니다
처음 트리거를 설정하면 "이 앱이 내 계정에 접근하려고 합니다"라는 권한 승인 화면이 나옵니다. 이건 정상입니다. 본인이 만든 스크립트가 본인의 Gmail로 이메일을 보내려면 권한이 필요하거든요.
  1. "고급"을 클릭합니다.
  2. "(프로젝트 이름)(으)로 이동(안전하지 않음)"을 클릭합니다.
  3. "허용"을 클릭합니다.
이름이 "안전하지 않음"이라고 나오는 이유는 구글의 검토를 거치지 않은 스크립트이기 때문인데, 본인이 직접 만든 스크립트이므로 안전합니다.
[스크린샷] 트리거 추가 화면 — 함수: onFormSubmit, 이벤트 소스: 양식에서, 이벤트 유형: 양식 제출 시

Step 4. 테스트하기

4

진짜 되는지 확인 (30초)

  1. Forms의 "미리보기"(눈 모양 아이콘)를 클릭합니다.
  2. 아무 응답이나 입력하고 "제출"을 누릅니다.
  3. 이메일을 확인합니다.

1~2분 내에 이런 이메일이 옵니다:

보낸 사람: me (나)

제목: [Forms 알림] 통합사회 과제 제출 - 새 응답


제출 시각: 2026-06-22 오전 10:15:30

▶ 이름

김민수

▶ 학년/반

2학년 3반

▶ 과제 파일 링크

https://docs.google.com/...

이메일이 안 왔다면, 아래 트러블슈팅 섹션을 확인해 주세요.

실전 활용 사례

이 스크립트는 "Forms가 제출될 때마다 이메일을 보내는" 범용 코드입니다. 어떤 Forms에든 붙일 수 있어요. 대표적인 활용 사례 세 가지를 소개합니다.

활용 1. 과제 제출 알림

상황: 수행평가 보고서를 Google Forms로 제출받고 있습니다. 마감일이 다가오는데, 누가 제출했는지 실시간으로 알고 싶습니다.

  • 학생이 제출하면 즉시 이메일로 확인 → "아, 3반 김민수 제출했구나"
  • 마감 시각 이후에 제출한 학생도 바로 파악 가능
  • 응답 탭을 새로고침할 필요 없이, 이메일 수만 세면 제출 현황 파악

활용 2. 상담 신청 알림

상황: Google Forms로 학생 상담 신청을 받고 있습니다. 급한 상담 요청을 놓치고 싶지 않습니다.

  • 학생이 상담을 신청하면 바로 이메일 알림 → 빠른 응대 가능
  • 신청 내용(고민 유형, 희망 시간 등)이 이메일에 포함되어 미리 준비 가능
  • 점심시간이나 방과 후에 신청이 들어와도 놓치지 않음

활용 3. 긴급 연락/건의 알림

상황: 학급 건의함을 Forms로 운영하고 있습니다. 중요한 건의가 들어오면 바로 확인하고 싶습니다.

  • 익명 건의가 들어오면 즉시 이메일 수신
  • 학교폭력 관련 긴급 신고를 놓치지 않음
  • 학생 입장에서는 "선생님이 바로 확인하시는구나" 하는 신뢰감 형성

💡 코드 업그레이드: 더 유용하게 쓰기

업그레이드 1. HTML 이메일로 보기 좋게

기본 코드는 텍스트 이메일입니다. 좀 더 보기 좋게 HTML 형식으로 보내고 싶다면, 코드를 이렇게 바꿔보세요:

function onFormSubmit(e) {
  const teacherEmail = "선생님이메일@gmail.com";
  const responses = e.response.getItemResponses();
  const formTitle = e.source.getTitle();
  const timestamp = e.response.getTimestamp();

  // HTML 이메일 본문 만들기
  let html = '<div style="font-family:sans-serif; max-width:600px;">';
  html += '<h2 style="color:#1a73e8;">' + formTitle + '</h2>';
  html += '<p style="color:#666;">📅 ' + timestamp + '</p>';
  html += '<table style="width:100%; border-collapse:collapse;">';

  responses.forEach(function(item) {
    html += '<tr>';
    html += '<td style="padding:10px; border-bottom:1px solid #eee; font-weight:bold; width:35%;">';
    html += item.getItem().getTitle();
    html += '</td><td style="padding:10px; border-bottom:1px solid #eee;">';
    html += item.getResponse();
    html += '</td></tr>';
  });

  html += '</table></div>';

  MailApp.sendEmail({
    to: teacherEmail,
    subject: "[Forms 알림] " + formTitle + " - 새 응답",
    htmlBody: html
  });
}

차이점은 body 대신 htmlBody를 사용하고, HTML 태그로 테이블 형태를 만든 것뿐입니다. 이메일이 깔끔한 표 형태로 옵니다.

업그레이드 2. 여러 선생님에게 동시 알림

동학년 선생님들과 함께 Forms를 운영한다면, 여러 이메일로 동시에 보낼 수 있습니다:

// 이메일 주소를 쉼표로 구분
const teacherEmail = "선생님1@gmail.com, 선생님2@gmail.com";

이 한 줄만 바꾸면 됩니다. 이메일 주소 사이에 쉼표와 공백을 넣으세요.

업그레이드 3. 특정 응답일 때만 알림 (조건부 알림)

예를 들어, 상담 신청 Forms에서 "긴급"을 선택한 경우에만 알림을 받고 싶다면:

function onFormSubmit(e) {
  const teacherEmail = "선생님이메일@gmail.com";
  const responses = e.response.getItemResponses();
  const formTitle = e.source.getTitle();
  const timestamp = e.response.getTimestamp();

  // 긴급도 항목 확인
  let isUrgent = false;
  responses.forEach(function(item) {
    if (item.getItem().getTitle() === "긴급도" &&
        item.getResponse() === "긴급") {
      isUrgent = true;
    }
  });

  // 긴급일 때만 이메일 전송
  if (!isUrgent) return;

  let body = "🚨 긴급 상담 신청이 접수되었습니다!\n\n";
  body += "제출 시각: " + timestamp + "\n\n";
  responses.forEach(function(item) {
    body += "▶ " + item.getItem().getTitle() + "\n";
    body += "   " + item.getResponse() + "\n\n";
  });

  MailApp.sendEmail({
    to: teacherEmail,
    subject: "🚨 [긴급] " + formTitle + " - 긴급 상담 신청",
    body: body
  });
}

"긴급도"와 "긴급" 부분을 본인 Forms의 질문 제목과 선택지에 맞게 바꾸세요.

🔧 이메일이 안 왔다면 — 트러블슈팅

# 증상 원인 해결
1 이메일이 전혀 안 옴 트리거가 설정 안 됨 Apps Script → 트리거 탭에서 트리거가 있는지 확인. 없으면 Step 3 다시 진행
2 권한 승인 화면에서 막힘 "안전하지 않은 앱" 경고 "고급" → "프로젝트명(으)로 이동" 클릭. 학교 계정이면 관리자에게 문의
3 트리거 실행 오류 알림 이메일 코드에 오타가 있음 이메일 주소 양쪽 따옴표가 있는지, 함수명이 onFormSubmit인지 확인
4 스팸함에 들어감 Gmail이 자동 분류 스팸함에서 "스팸 아님" 처리. 이후 정상 수신됩니다
5 하루 이메일 수 초과 오류 무료 계정은 하루 100통 제한 학생 수가 100명 이하라면 문제없음. 초과 시 Google Workspace 계정 사용

실행 로그 확인하기

Apps Script 편집기에서 "실행" 탭(▶ 아이콘)을 클릭하면 스크립트 실행 기록을 볼 수 있습니다. 에러가 났다면 여기서 빨간 글자로 원인이 표시됩니다. 에러 메시지를 구글에 검색하면 대부분 해결 방법을 찾을 수 있어요.

알아두면 좋은 팁

  • 다른 Forms에도 같은 코드 재사용: 새 Forms를 만들 때마다 같은 과정을 반복하면 됩니다. 코드는 동일하고, 이메일 주소만 확인하세요.
  • 이메일 발송 한도: 일반 Gmail은 하루 100통, Google Workspace(학교 계정)는 하루 1,500통까지 보낼 수 있습니다.
  • 응답 스프레드시트와 병행: 이 알림 스크립트는 기존 "응답을 스프레드시트에 기록" 기능과 독립적입니다. 둘 다 동시에 사용할 수 있어요.
  • 스크립트 수정 후 트리거 재설정 불필요: 코드만 수정하면 다음 실행부터 바뀐 코드가 적용됩니다. 트리거를 다시 만들 필요 없어요.
  • 모바일에서도 알림 수신: Gmail 앱 알림을 켜두면 스마트폰에서도 바로 확인됩니다.
  • Google Workspace 학교 계정 주의: 일부 학교 계정은 관리자가 Apps Script를 차단해 놓은 경우가 있습니다. "스크립트 편집기" 메뉴가 안 보인다면 학교 IT 관리자에게 문의하세요.

전체 흐름 정리

단계 할 일 소요 시간 반복 필요?
Step 1 Forms → 더보기 → 스크립트 편집기 열기 30초 Forms마다 1회
Step 2 코드 붙여넣기 + 이메일 주소 수정 + 저장 1분 Forms마다 1회
Step 3 트리거 설정 (양식 제출 시 실행) 1분 Forms마다 1회
Step 4 미리보기에서 테스트 제출 → 이메일 확인 1분 확인용 1회
합계 약 4분

이후에는 아무것도 하지 않아도 됩니다. 학생이 Forms를 제출할 때마다 구글 서버가 자동으로 스크립트를 실행하고, 이메일을 보내줍니다. 내 컴퓨터를 켜놓을 필요도 없고, 어디서든 이메일만 확인하면 됩니다.

이 글이 도움이 되셨다면 다른 선생님들에게도 공유해 주세요. 코드 관련 질문은 댓글로 남겨주시면 답변 드리겠습니다.

현직 고교 교사가 전하는 통합사회·경제의 정석. 고퀄리티 수업 PPT와 HTML 시뮬레이션 교구, 생생한 여행 기록을 통해 사회를 풀어냅니다.