소개
시도하고자 했던 것과 그 이유를 알려주세요.
ChatGPT를 활용해 Google Forms와 관련된 퀴즈를 만들고, 실제 Google Forms를 활용해 퀴즈를 만들고자 했습니다.
7월 12일 오프모임 때 배운 Google Forms를 응용해 보고, 이론과 실제를 접목해 보기 위함이었습니다.
진행 방법
사용한 도구들
Google Sheets: 통계 분석, 자동 채점 등 확인(응답 시트 자동 생성). 대시보드 만들기
Google Apps Script: 10문제 퀴즈 자동 생성
트리거 설정: 응답자가 퀴즈를 제출할 때마다 자동 실행되도록 설정
ChatGPT: 코드 생성
전체 흐름
ChatGPT로 Google Forms 레벨 1 퀴즈 생성
Google 트레이너 자격시험 레벨 1 스타일에 맞게 Google Forms와 관련된 10문제를 생성해 달라고 요청했는데, 문제 유형이나 내용을 신뢰할 수 없어 <Google for Education> 내의 'Google 설문지 시작하기'를 학습시킴
Google Forms로 퀴즈 만들기 및 채점
https://support.google.com/docs/answer/7032287?hl=en
Google Forms를 이용해 퀴즈 생성
응답 확인 + 자동화 기능을 추가하기 위해 '설정' 수정 (설정에 따라 제공되는 통계들)
ChatGPT를 통해 생성한 Google Apps Script 코드 복붙 & 트리거 설정
1) 채점 결과가 내 메일로 전송되는지 확인하기 위해 테스트용 코드 생성
내가 직접 테스트할 때는 트리거 불필요
function testSendCustomScoreEmail() {
var email = "[email protected]"; //
var name = "김지연"; //
var score = 9; //
var message = "";
if (score >= 9) {
message = "🎉 " + name + "님, 최고 점수입니다! (" + score + "점)";
} else if (score >= 7) {
message = name + "님, 잘 하셨어요! (" + score + "점)";
} else {
message = name + "님, 괜찮아요. 다음엔 더 잘할 수 있어요! (" + score + "점)";
}
var subject = "[퀴즈 결과 안내]";
MailApp.sendEmail(email, subject, message);
}2) 실제 자동 이메일 전송용 Google Apps Script 코드 생성
Google Sheets를 통해 오류 발생 원인 발견 -> 수정된 Apps Script 코드 (이름 없이)
function sendCustomScoreEmail(e) {
var email = e.values[1]; // 이메일 주소 (두 번째 열)
var scoreText = e.values[2]; // "9 / 10" 같은 형식
var score = Number(scoreText.split("/")[0].trim()); // 숫자만 추출
Logger.log("이메일 전송 대상: " + email);
Logger.log("점수: " + score);
var message = "";
if (score >= 10) {
message = `🎉 훌륭합니다! 만점입니다. (${score}점)`;
} else if (score >= 9) {
message = `좋은 결과입니다! (${score}점)`;
} else {
message = `괜찮아요, 다시 도전해보세요. (${score}점)`;
}
var subject = "[Google Forms 퀴즈 결과]";
MailApp.sendEmail(email, subject, message);
}3) 자동 실행을 위해 트리거 설정 : 최종 실행과 오류율 확인 + 새 응답 제출
시트 > 확장 프로그램 > Apps Script > 트리거
4) 성적표 PDF 파일 발송을 위한 Google Apps Script 코드 생성 & 트리거 설정
function sendScoreAsPdf(e) {
const email = e.values[1]; // 이메일 (두 번째 열)
const rawScore = e.values[2]; // 점수 (예: "7 / 10")
const score = Number(rawScore.split('/')[0].trim()); // 숫자만 추출
const timestamp = e.values[0]; // 제출 시간 (첫 번째 열)
let feedback = "";
if (score === 10) {
feedback = "🎉 훌륭합니다! 만점입니다.";
} else if (score >= 8) {
feedback = "좋은 결과입니다!";
} else {
feedback = "괜찮아요, 다시 도전해보세요.";
}
// 여기에 본인의 Google Docs 템플릿 문서 ID 넣기!
const docId = "여기에_당신의_문서_ID"; // 예: "1b5tySAHT2ma0pl9CK3wMu7G6MbC29-a089Bz4nitB4E"
// 템플릿 복사 → 개인화
const tempDoc = DriveApp.getFileById(docId).makeCopy();
const newDoc = DocumentApp.openById(tempDoc.getId());
let body = newDoc.getBody();
// 텍스트 치환
body.replaceText('{{제출일시}}', timestamp);
body.replaceText('{{점수}}', score + "점");
body.replaceText('{{피드백}}', feedback);
newDoc.saveAndClose();
// PDF 변환
const pdf = DriveApp.getFileById(tempDoc.getId()).getAs(MimeType.PDF);
const subject = "[Google Forms 퀴즈 결과 안내]";
const message = "첨부된 PDF 파일에서 결과를 확인해보세요.";
// 이메일 전송
MailApp.sendEmail({
to: email,
subject: subject,
body: message,
attachments: [pdf]
});
// 임시 문서 삭제 (선택사항)
DriveApp.getFileById(tempDoc.getId()).setTrashed(true);
}기타 Google Forms 기능 실습
1) Google Sheets 대시보드 만들기 : 성적 시각화 요약
1단계: 요약 통계 함수 추가(대시보드 시트에 작성)
항목
셀
함수 예시
응답 수
B2
=COUNTA('설문지 응답 시트1'!B2:B)
평균 점수
B3
=AVERAGE('설문지 응답 시트1'!C2:C)
최고 점수
B4
=MAX('설문지 응답 시트1'!C2:C)
최저 점수
B5
=MIN('설문지 응답 시트1'!C2:C)
2단계: 점수 분포 그래프 만들기
2) PDF 성적표 자동 생성 및 전송
1단계: Google Docs에 성적표 템플릿 문서 만들기
📄 [성적표]
제출일시: {{제출일시}}
점수: {{점수}} / 10점
피드백: {{피드백}}
수고하셨습니다!2단계 : 문서 ID 복사 -> Apps Script에 붙여넣기
https://docs.google.com/document/d/1b5tySAHT2ma0pl9CK3wMu7G6MbC29-a089Bz4nitB4E/edit?tab=t.0
const docId = "1b5tySAHT2ma0pl9CK3wMu7G6MbC29-a089Bz4nitB4E";3단계 : 저장하고 퀴즈 제출
-> 점수가 나오지 않아 코드 수정 후 완료 *트리거는 수정하지 않음
3) Google Forms에서 상단 이미지 교체하기 & 색상 변환
'테마 맞춤설정'을 통해 상단 이미지 교체(Canva에서 수정) & 글씨 수정 & 배경 색상 수정
4) 공유
[최종 결과물] Google Forms 퀴즈 – 레벨 1 연습(10문항)
https://forms.gle/y3jHhnUes3NRzjJc6
결과와 배운 점
배운 점과 나만의 꿀팁을 알려주세요.
Google Forms의 기능을 이론적으로, 실제 활용을 통해 알게 되었습니다.
* Google Forms 동영상 + ChatGPT '초등학생도 이해하기 쉽게 설명해줘'
과정 중에 어떤 시행착오를 겪었나요?
ChatGPT가 생성해준 퀴즈 문항과 Apps Script 코드가 불일치하여 많은 어려움이 있었습니다.
Sheets를 살펴보면서 오류를 발견했는데, 코드를 읽어보는 힘을 키워야 할 것 같습니다.
도움이 필요한 부분이 있나요?
오프라인 모임의 실습 + ChatGPT
앞으로의 계획이 있다면 들려주세요.
Google Forms 외에도 다양한 Google Workspace for Education 도구들을 활용해 보고자 합니다.
실제 문제의 정답이 맞는지 확인 후 각 구글 도구들마다 간단 퀴즈를 생성해볼까 합니다.
도움 받은 글
12일 오프라인 모임 때 Miki(유미선) 공동스터디장님의 지도와
막강한 실력을 가지신 버디님(엘리Kim님) 및 구글자격증반 회원님(오프 참석자분)들의 도움이 컸습니다.