Google Docs Script 활용 예제
적용 배경
영어 Writing 교육 커뮤니티를 운영하고 있는 친구가 커뮤니티 멤버를 상대로 구글 Forms를 이용해 질문을 한 후 학생(멤버)이 답을 제출 했을 때 구글 스프레드시트에서 미리 작성된 정답과 제출한 답을 비교하여 feedback을 바로 메일로 결과를 발송 하고자 함
적용 방법
- 질문할 Form을 작성
- 스프레드시트에서 스크립트 작성
- Test 결과
1. 질문할 Form을 작성
- 아래의 그림과 같이 구글 Forms를 이용해 질문의 양식을 작성
2. 스프레드시트에서 스크립트 작성
- 구글 스프레드시트에서 Tools(도구)의 Scripts(스크립트)를 선택해서 Script editor(스크립트 편집기)를 선택
- 아래와 같이 스크립트 소스를 편집기의 내용에 복사
- 소스 원문
제출된 값과 이미 저장해 놓은 정답을 비교하여 정답 및 오답을 count해서 제출자의 email로 Report 발송
function onFormSubmit(e) { var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheets()[1]; var values = e.values; var questionsCount = values.length-3; var firstName = e.values[1]; var eMail = e.values[2]; var questionsAndAnswers = ''; var incorrectAnswersCount = 0; for (var i=0; i < questionsCount; i++) { var value = values[i+3]; var question = sheet1.getRange(1, i+4, 1, 1).getValue(); var correctValue = sheet2.getRange(i+1, 1, 1, 1).getValue(); if (correctValue != '' && correctValue != value) incorrectAnswersCount++; questionsAndAnswers += 'Question ' + (i+1) + '. ' + question + '<br/>'; questionsAndAnswers += 'You answered <b>' + value + '</b>. The correct answer is <b>' + correctValue + '</b>.<br /><br />'; } var mailBody = "<html><body><p>" + "Hi, " + firstName + ". <br />" + "You just took a quiz from Learn English Wave. Here's are your results:<br />" + "There were " + questionsCount + " questions. You answered " + incorrectAnswersCount + " question(s) incorrectly<br /><br />" + questionsAndAnswers + "<br />" + "Thanks for taking the quiz. If you have any questions, you can write to me at jonedw@gmail.com.<br />" + "Regards,<br />" + "Jon"; + '</p></body></html>'; MailApp.sendEmail(eMail, '[Learn English Wave] Your Quiz Results', "", {htmlBody: mailBody}); } |
- 트리거(Trigger) 설정
트리거 내용은 질문 Form에 대해 답변을 작성하고 제출(submit) 했을때 event 발생하도록 설정
- 스크립트 에디터에서 설정된 내용을 저장
- sheet2 미리 작성된 정답 넣기
아래의 그림과 같이 sheet2에 미리 준비된 정답을 작성
3. Test 결과
질문에 대한 정답을 제출 시 곧바로 해당 feedback report를 메일로 수신함
- 메일의 수신함
- 메일의 본문
결론 : 위와 같이 구글에서 제공하는 Google Apps script를 이용해 forms와 연동해서 다양하게 활용할 수 있음.
좋은 아이디어나 활용 사례가 있으시면 자유롭게 공유 부탁 드립니다.
도와주신 분:
Learn English wave (jonedw@gmail.com) : https://groups.google.com/forum/#!forum/learn-english-wave
Script Created By Anton Okolelov
문서 작성 :
1 comment:
오우 너무 좋은 예입니다... 근네 스크립트를 실행하는 도중에 오류가 나는데요???
var values = e.values; 이 라인에서 오류가 있다고 하는데 문제가 뭔지???
감사
Post a Comment