Sunday, February 27, 2011

Google Docs Script 활용 예제


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:

Unknown said...

오우 너무 좋은 예입니다... 근네 스크립트를 실행하는 도중에 오류가 나는데요???
var values = e.values; 이 라인에서 오류가 있다고 하는데 문제가 뭔지???
감사