얼마 전에 결과적으로(?) 재밌었던 작업이 있어서 기록 삼아 글로 남겨본다.
지인이 얼마 전 구글 설문지를 하나 만들었다. 며칠짜리 컨퍼런스를 하는데 구글 설문지를 통해 신청을 받는다고 했다. 이 컨퍼런스에는 2개의 선택강의가 있고, 신청서에도 선택강의 항목을 넣어 신청을 받았다. 그런데, 각 강의는 장소 때문에 25명으로 신청 인원을 제한해야 했다.
신청 내역에서 각 선택강의의 신청자 수를 보기 쉽게 통계를 내달라고 연락이 왔다. 신청자를 계산해서 인원이 차면 수동으로 해당 강의를 제외하려 한다고. 물론 설문지 자체에서도 간단히 통계를 볼 수 있지만 선택강의 결과만 확인 후 필요시 설문지를 수정할 수 있도록 하기 위해 결과 데이터에 수식을 걸어서 간단히 통계를 냈다.
간단한 작업이라 어렵지 않게 처리해줬다. 딱, 여기까지만 했어야 했다.. 그럼 간단히 끝났을 텐데..
언제 강의 신청이 들어올지 모르는 걸 매번 들어가 확인해서 설문지를 변경해야 하는 수작업이 걱정되었다. 어차피 내가 할 것도 아닌데 왜 걱정을 했을까.. ㅜㅜ
구글 설문지는 원래 그런 기능이 없는 걸 알지만, 혹시나 해서 관련 플러그인이라도 있을까 싶어 검색을 해봤다. 찾아보니 formLimiter라는 게 있었는데, 이건 그냥 설문지를 통해 접수된 수를 제한하는 기능을 제공하는 add-on이었다.
별다른 뾰족한 방법이 없어 보여서 접으려고 했는데.. 문득 최근에 조금씩 찾아보고 공부하고 있던 Google Apps Script가 생각나서 찾아봤다.
Apps Script는 코딩을 통해 구글 제품들(Gmail, Drive, Calender 등)을 API를 통해 제어할 수 있도록 해주는 구글 서비스다. 잘 활용하면 자동화할 수 있는 부분들이 있을 것 같아서 틈틈이 테스트를 해보고 있다.
그동안 구글 시트에서 Apps Script를 조금 사용해봤는데, 찾아보니 구글 설문지에도 Apps Script를 적용할 수 있었다.
그러고 보니 설문지 More 메뉴에 Script Editor 메뉴가 있는 것이 보였다.
Script를 적용하기 위해서는 약간의 코딩이 필요하다. 난 전산을 공부했지만 개발을 업으로 해본 적이 없다. 그래서, Apps Script를 처음 사용할 때 시행착오를 많이 했다. 하지만 구글신의 도움을 받아서 조금씩 시도해보고 있다.
Apps Script는 구글 제품들에 대한 API를 가져다 사용하기 쉽게 되어있어서 코드를 생성한 후 Log를 찍어가며 테스트를 해보기도 하고, 디버깅을 돌려서 데이터 확인을 했다. 삽질을 하는 과정을 통해 완벽하지는 않지만 내가 원하는 정도로 기능이 완성되어 적용을 했다.
(브런치에는 코드 스니펫 같은 게 없어서 코드를 올리기가 불편하다. 덕분에 GitHub 계정을 파서 코드를 올려봤다. 브런치 글 쓴다고 별걸 다 해본다.)
Apps Script에서는 이렇게 완성한 코드를 스케줄링해서 반복 실행하는 Trigger 기능을 제공한다. Trigger는 form submit이 되거나 구글 시트가 업데이트되는 등 액션에 기반하거나 매일, 매시간 등 시간에 기반한 trigger를 제공한다.
한 시간에 한 번씩 해당 스크립트가 실행되도록 설정해놓았다. 그렇게 해놓으니 사람이 매번 신청 결과를 확인할 필요 없이 자동으로 구글 설문지가 수정되었다. (만세)
Google Apps Script를 조금씩 배워보면서 코딩에 대한 관심이 생겼다. 코드를 올려놓고 실행하기 위한 인프라가 필요 없이 코드만 있으면 간단히 자동화가 되는 걸 보면서 시간이 되는대로 조금씩 공부해볼까 싶다.
나중에 안 사실이지만.. 위에 공유한 코드는 실제로 사용했을 때 한 가지 문제가 있었다. 선택할 수 있는 강의가 1개만 남았을 때는 제한 인원이 넘어도 해당 강의가 사라지지 않는다. 왜냐하면 구글 설문지에 선택 옵션이 없는 문항을 만들 수 없기 때문이다. 이 경우 그냥 해당 문항을 삭제하는 것 외에는 방법이 없는 것 같다. 하지만 이런 오류가 있다는 걸 신청기간이 끝난 이후에 알아서 코드를 수정하지는 않았다. 잘 기억해놨다가 나중에 해봐야지.