본문 바로가기
Google/Google Apps Script

새로운 설문이 제출될 때 메일로 자동 알림 받기, 보내기 - 구글 설문지 + 구글 앱스 스크립트 활용법

by 새봄아빠 2017. 5. 15.

새로운 설문이 제출될 때 메일로 자동 알림 받기, 보내기

(구글 설문지 + 구글 앱스 스크립트 활용법)


구글 양식(Google Form)을 활용하여 설문을 활용하는 경우가 많습니다. 설문이 진행 되는 동안 새로운 설문이 올 때 바로 알 수 있다면 얼마나 좋을까요? 또한 설문을 작성한 사람에게 설문에 응해주셔서 감사하다는 메일을 보낼 수 있다면 얼마나 좋을까요?


구글 설문지와 구글 앱스 스크립트를 이용하여 간단하게 자동 메일 발송 기능을 구현해 봅시다. 정말 간단할까?


구글 설문 만들기 (Google Form)

이 내용을 찾아오신 분들은 기본적으로 구글 설문지를 만드는 법을 알고 계실거라 생각됩니다. 그래서 그 부분은 간략하게 정리하고 넘어가겠습니다. 괜찮죠? ^^;


구글 설문(https://docs.google.com/forms)에 접속하여 새로운 설문지를 만들어보겠습니다.


테스트를 위해 간단하게 설문지를 만들어보았습니다. 이름과 이메일 주소, 하고 싶은 말을 입력하도록 항목을 넣었습니다.





미리보기 버튼(눈동자 처럼 생긴거)을 눌러서 항목을 입력 해볼까요?





설문 항목이 잘 입력되었는지 응답(Responses) 버튼을 눌러봅니다. 화면 오른쪽에 스프레드 시트 모양의 아이콘을 눌러 답변이 스프레드 시트에 어떻게 입력되었는지 확인해 봅니다.





짜잔! 아주 간단하게 설문지가 완성되었으니 이제 본격적으로 메일 자동 발송 스크립트를 만들어보겠습니다. 



구글 스크립트 만들기 (Google Script)

구글 스크립트를 입력하기 위해 응답이 입력된 스프레드 시트로 가 보겠습니다. 화면 위에 있는 메뉴에서 Tools > Script editor... 를 선택합니다. (한글로 설정되어 있으면 메뉴가 뭐라고 나오는지? ^^;;) 





성공적으로(?) Script Editor 가 열린다면 아래와 같은 화면이 나타납니다.


보기만해도 겁이 나네요...  





도대체 저 화면에다 무슨 일을 해야 하는걸까요?


구글 앱스 스크립트(Google Apps Script) 페이지에 가면 우리가 사용하고 싶은 스크립트의 클래스(Class), 매쏘드(Method) 등을 참조하실 수 있습니다. 프로그래밍 언어를 다뤄보셨으면 훨씬 이해하기 쉬우실 거지만.. 그렇지 않으시다면.. ㅠㅠ


아무튼 클래스, 매쏘드 사용 형식을 분석하는 법만 아셔도 훠~얼씬 수월하게 스크립트를 만들어보실 수 있습니다.





구글 앱스 스크립트 사이트에 방문하시면 간단한 예제, 샘플들을 보실 수 있습니다. 그리고 필요한 클래스, 매쏘드 들을 참조하실 수도 있습니다.



다시 스크립트 에디터로 돌아와봅시다. 스크립트 에디터에 아래와 같이 입력을 합니다.





* 스크립트 입력

function onFormSubmit(e) {

    MailApp.sendEmail("관리자 메일 주소", "000 설문이 접수되었습니다.", e.values[1]);

    MailApp.sendEmail(e.values[2], "설문에 참여해주셔서 감사합니다.", e.values[1] + "님 설문에 참여해 주셔서 감사합니다.\n님 최고!!! 사랑해요~");

}


스크립트가 생각보다 참 간단하죠?



스크립트를 입력하셨으면 화면 상단의 여러 아이콘들 중에 시계 모양으로 생긴 아이콘(current project's triggers)을 눌러줍니다. 저는 본능적으로(?) 화살표를 눌렀는데... 그게 아니더라구요..






Current project's triggers 설정 창이 나타납니다. 

  • Run : onFormSubmit
  • Events : From spreadsheet / On form submit


으로 셋팅하고 저장합니다.




권한(Permission)이 필요하다고 나오네요. 제발 허락(Allow)해 주세요.




이제 정말 끝!!!! 진짜?



 



이 스크립트가 무슨 뜻일까?

앞의 스크립트만 입력하면 끝! 우리가 원하는 기능(설문지가 입력되면 관리자에게, 혹은 설문을 입력한 사람에게 자동으로 메일을 보내는 것)을 구현 할 수 있습니다.


그래도 저 스크립트가 무슨 뜻인지를 간단하게는 이해해보고 넘어가는게 좋겠죠? 


function onFormSubmit(e) {

    MailApp.sendEmail("관리자 메일 주소", "000 설문이 접수되었습니다.", e.values[1]);

    MailApp.sendEmail(e.values[2], "설문에 참여해주셔서 감사합니다.", e.values[1] + "님 설문에 참여해 주셔서 감사합니다.\n님 최고!!! 사랑해요~");

}


onFormSubmit()

이 매쏘드는 Form(설문지)에 응답(Response)이 제출되면 특정한 작업을 수행하도록 합니다.




* 참조 : https://developers.google.com/apps-script/reference/script/form-trigger-builder#onFormSubmit()



sendEmail()

MailApp 클래스의 sendEmail 메쏘드입니다. 여러 Return type 중에 sendEmail(recipient, subject, body)를 이용했습니다.

  • MailApp.sendEmail("관리자 메일 주소", "000 설문이 접수되었습니다.", e.values[1]);
이 문장은 관리자에게 설문이 접수되었다고 안내를 보내는 내용입니다. 

  • MailApp.sendEmail(e.values[2], "설문에 참여해주셔서 감사합니다.", e.values[1] + "님 설문에 참여해 주셔서 감사합니다.\n님 최고!!! 사랑해요~");

이 문장은 설문지를 작성한 사람에게 안내를 보내는 내용입니다.


e.values[2]와 e.values[1]이 무엇인지 궁금하실텐데요. e.values 는 설문한 내용들을 담아둔 배열입니다. [0] 부터 시작해서 번호가 이어지는데요. e.values[0]은 설문지의 첫 번째 열(저의 경우 "Timestamp"), e.values[1]은 두 번째 열(저의 경우 "이름"), e.values[2]는 세 번째 열(저의 경우 "메일 주소"), e.values[3]은 네 번째 열(저의 경우 "하고 싶은 말")이 되겠죠.




* 참조 : https://developers.google.com/apps-script/reference/mail/mail-app




테스트 해보기

스크립트가 잘 만들어졌는지 테스트해보기 위해 설문지를 작성해봅시다.




설문지를 작성했더니 아래와 같이 메일이 왔습니다.


두 개의 sendEmail 이 제대로 작동했습니다. (하나는 관리자에게, 하나는 설문 작성자에게 보내는 메일이였죠? 설문지의 메일 주소를 관리자 메일로 입력했더니..ㅎㅎ)






메일을 읽어볼까요?



  • MailApp.sendEmail(e.values[2], "설문에 참여해주셔서 감사합니다.", e.values[1] + "님 설문에 참여해 주셔서 감사합니다.\n님 최고!!! 사랑해요~");
e.values[2] 때문에 저에게, 

"설문에 참여해주셔서 감사합니다." 라는 제목으로,

e.values[1] + "님 설문에 참여해 주셔서 감사합니다.\n님 최고!!! 사랑해요~" 
"때문에 테스팅4님 설문에 참여해주셔서 감사합니다.
님 최고!!! 사랑해요~"라는 내용으로 메일이 도착했습니다. 


어렵지 않죠?
생각보다 자동 이메일 기능을 간단하게 구현할 수 있었습니다^^//



사이트 도구로 만들어본 IT4EDU 사이트

블로그 소식을 한 눈에!


http://sites.google.com/view/it4edu



 

 


구독 신청하기

새로 포스팅되는 블로그 정보들을 메일로  받고 싶으시면 아래 링크에 가셔서 이메일 주소를 입력해주세요^^


[ 구독하기 ]




댓글5

  • 대학생 2017.06.01 16:45

    잘 읽었습니다!
    질문하나 드리려고 합니다.
    작성해주신 코드를 따라 컴파일 하였는데
    TypeError: undefined에서 'values' 속성을 읽을 수 없습니다.('코드' 파일, 2행) 와 같은 오류가 발생합니다.
    혹시 어떤부분이 문제인지 알고 계실까요..?
    답글

  • 11 2017.08.04 19:16

    저도동일한현상이네요
    답글

  • 짜증 2018.01.25 19:04

    안되!!!!안되!!!안된다고1!!!!!ㅇㄻㅁ누하ㅣㅁㅈ댄뤼ㅏㅇㄴ말;ㅁㄴ'
    답글

  • ㄹㅇㅋㅋ 2021.09.10 20:25

    생각을 해보셈 우리가 커스텀으로 이벤트 함수 만든건데 자동으로 e에 체 담기기를 바라면 안 되지 ^^
    실행하니까 object 나오누 ㅋㅋ
    답글