G Suite Update‎ > ‎

Google Docs Script 활용 예제

게시자: Frank Jung, 2011. 2. 27. 오후 10:33   [ 2011. 2. 27. 오후 11:06에 업데이트됨 ]

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

문서 작성 : 
Comments