Google 설문지를 위한 Google Apps Script: 초보자 가이드
빠른 답변: Google Apps Script는 Forms, Sheets 및 다른 Workspace 앱을 자동화하기 위한 Google의 무료 내장 JavaScript 플랫폼입니다. 제출할 때마다 소유자에게 이메일 보내기, 응답을 자동으로 제한하기, PDF 확인서 생성하기 등 Forms가 기본적으로 하지 않는 것들을 추가하는 방법입니다. 기본적인 코딩 지식이 필요하다는 점이 진짜 진입 장벽입니다.
Google 설문지는 의도적으로 단순하게 설계되어 있어서, "누군가 제출하면 나에게 이메일 보내줘", "50개 이후에는 응답 받기를 멈춰", "Forms가 지원하지 않는 방식으로 이 필드를 검증해줘" 같은 흔한 요청들이 기본 상태로는 처리되지 않습니다. Google Apps Script는 Google이 여러분에게 그 격차를 직접, 무료로, Google 생태계를 벗어나지 않고 메울 수 있도록 제공하는 도구입니다. 이 가이드는 그것이 무엇인지, 폼에 실제로 무엇을 해줄 수 있는지, 어떻게 구성되는지 보여주는 간단한 예제, 그리고 실제로 누구를 위한 것인지 설명합니다.
Google Apps Script란 무엇인가요?
Apps Script는 JavaScript를 기반으로 한 Google의 내장 스크립팅 플랫폼으로, Forms, Sheets, Docs, Gmail, Calendar 등 Google Workspace 앱과 상호작용하는 작은 프로그램을 작성할 수 있게 해줍니다. 전적으로 Google 서버에서 실행되므로 설치할 것도, 별도로 관리할 호스팅도 없습니다. 두 곳 중 하나에서 접근할 수 있습니다: 폼의 점 세 개 메뉴에서 Script editor를 선택하거나, 연결된 Google 시트를 열어 Extensions > Apps Script로 이동하세요. 두 경로 모두 같은 종류의 에디터를 열지만, 폼에 연결된 스크립트와 시트에 연결된 스크립트는 시작 컨텍스트가 약간 다릅니다.
Apps Script가 Forms에 기본적으로 없는 기능을 가능하게 하는 방법
- 새 제출이 있을 때마다 폼 소유자에게 자동 이메일 보내기. Google 설문지에는 이를 위한 기본 알림 설정이 없습니다 — 가장 가까운 내장 옵션은 즉각적인 알림이 아니라 새 응답에 대한 주기적인 이메일 요약입니다. Apps Script는 응답이 들어오는 순간 이메일을 발송할 수 있으며, 이는 지원 요청이나 긴급 신청 같은 시간이 중요한 폼에 중요합니다. 응답에 대한 알림을 전혀 받지 못하는 이유를 찾고 있다면, 이는 관련 있지만 다른 문제입니다 — Google 설문지가 응답을 받지 않는 문제 가이드를 참고하세요.
- 일 또는 개수 기준으로 응답 자동 제한하기. 폼을 예를 들어 50개 제출로 제한하거나 특정 날짜 이후 닫는 서드파티 "응답 제한" 부가기능들은 보통 응답 수나 날짜를 확인하고 프로그래밍 방식으로 폼을 닫는 Apps Script 트리거 위에 구축되어 있습니다. 응답 제한 이후 Google 설문지 닫기 가이드에서 부가기능 방법과 그 이면에서 일어나는 일을 모두 다룹니다.
- Forms가 기본적으로 할 수 없는 맞춤 검증. Forms의 내장 검증은 단일 필드에 대한 숫자 범위나 정규식 패턴 같은 기본 규칙으로 제한됩니다. Apps Script는 여러 답변을 서로 대조하거나 외부 데이터와 대조하는 방식으로, 기본 검증 옵션이 할 수 없는 것을 할 수 있습니다.
- PDF 확인서 자동 생성. 스크립트는 새 응답을 가져와 문서로 포맷하고, PDF로 변환하고, 등록이나 신청, 주문 폼에 유용한 영수증이나 확인서로 응답자에게 다시 이메일을 보낼 수 있습니다.
간단한 예제, 개념적으로 설명
다음은 누군가 제출할 때 폼 소유자에게 이메일을 보내는 스크립트의 대략적인 형태입니다. 이는 구조를 보여주기 위한 예시이며 — 여러분의 폼의 실제 질문에 맞게 조정하지 않고 그대로 붙여넣을 수 있는 프로덕션 준비 코드가 아닙니다.
function onFormSubmit(e) {
// e.response에는 제출된 폼 응답이 들어 있습니다
var responses = e.response.getItemResponses();
var summary = "";
responses.forEach(function (itemResponse) {
summary += itemResponse.getItem().getTitle() + ": " + itemResponse.getResponse() + "\n";
});
// 새 응답 내용을 담아 소유자에게 이메일 발송
MailApp.sendEmail("[email protected]", "New form response", summary);
}
핵심 부분: onFormSubmit(e)는 트리거 함수입니다 — 새 응답이 들어올 때 Apps Script가 자동으로 이를 호출하며, e는 getItemResponses()를 통해 각 답변에 접근할 수 있게 해주는 e.response를 포함한 이벤트 데이터를 담고 있습니다. 여기서부터 스크립트는 Apps Script의 서비스가 지원하는 모든 것을 할 수 있습니다 — 이메일 발송, 시트에 쓰기, 외부 API 호출, 문서 생성. 트리거 자체는 에디터의 Triggers 패널에서 별도로 설정하며, 여기서 이 함수를 "On form submit"에서 실행하도록 지정합니다.
단계별 설정 방법
- 폼의 점 세 개 메뉴에서, 또는 연결된 시트의 Extensions > Apps Script를 통해 Script editor를 엽니다.
- 이벤트 객체에서 제출된 답변을 읽는, 위 예제와 같은 트리거 함수를 작성합니다.
- 실행하고 싶은 실제 이메일, PDF, 또는 확인 작업인 자동화 로직을 추가합니다.
- Triggers 섹션(왼쪽 사이드바의 시계 아이콘)에서 함수가 "From form" / "On form submit" 이벤트에서 실행되도록 새 트리거를 추가해 트리거를 설정합니다.
- 승인하고 테스트합니다. 처음 실행하면 스크립트가 폼과 Gmail에 접근할 수 있도록 권한을 요청합니다. 이를 승인한 다음 실제 테스트 응답을 제출해 모든 것이 제대로 작동하는지 확인하세요.
더 배울 수 있는 곳
Apps Script는 Google이 직접 제공하는 방대한 공식 문서를 갖추고 있으며, Forms 서비스, 트리거, 그리고 접근할 수 있는 다른 모든 Workspace 앱을 다룹니다. 직접 스크립트를 작성하는 데 진지하다면, 제품 자체와 함께 유지 관리되기 때문에 서드파티보다 가장 신뢰할 수 있고 최신인 참고 자료입니다.
"제출 시"를 넘어서는 흔한 트리거
폼 제출이 가장 흔한 트리거이지만, 폼에 유용한 유일한 트리거는 아닙니다. (역시 Triggers 패널에서 설정하는) 시간 기반 트리거는 누군가 응답을 제출했는지와 무관하게 매시간, 매일, 또는 특정 시간에 일정에 따라 실행될 수 있습니다. 이것이 정해진 날짜에 폼을 자동으로 닫거나, 제출마다 이메일을 보내는 대신 그날의 응답에 대한 일일 요약을 보내거나, 오래된 응답을 지속적으로 별도의 시트로 보관하는 등의 예약된 동작을 가능하게 합니다. 에디터 기반 트리거(onEdit)는 연결된 스프레드시트에서 누군가 셀을 변경할 때 실행되며, 상태 열에서 응답을 수동으로 "처리됨" 또는 "승인됨"으로 표시할 때 스크립트가 반응하도록 하고 싶다면 유용합니다.
Apps Script 문제 해결하기
- 폼이 제출되어도 스크립트가 실행되지 않음: 트리거가 실제로 저장되어 있고 다른 이벤트 유형이 아니라 "On form submit"을 가리키는지 확인하세요 — 이전 테스트 세션에서 만든 트리거가 잘못 설정된 새 트리거와 함께 조용히 존재할 수 있으므로, Triggers 패널에서 중복이 있는지 확인하세요.
- 실행할 때마다 "Authorization required" 오류가 남: Google 계정 비밀번호를 변경하거나 Google이 Gmail 발송 같은 민감한 범위를 주기적으로 재확인할 때 Apps Script 권한이 취소될 수 있습니다. 에디터에서 스크립트를 한 번 수동으로 다시 실행해 승인 요청을 다시 트리거하세요.
- 수동으로 실행하면 작동하지만 자동으로는 안 됨: UI 대화상자를 표시하는 것 같은 일부 Apps Script 서비스는 자동화된 트리거가 아니라 사람이 직접 스크립트를 실행할 때만 작동합니다 — 자동화된 트리거는 이메일 발송이나 시트에 쓰기 같은 비대화형 동작을 사용해야 합니다.
- 이메일이 발송되지 않음: Apps Script의 무료 티어에는 일일 이메일 할당량이 있습니다(개인 Gmail 계정보다 Google Workspace 계정이 더 높음) — 대량 폼은 이 상한선에 도달해 그날 나중 시간의 이메일이 조용히 실패할 수 있습니다.
솔직한 진입 장벽
Apps Script는 실제 코딩 — 구체적으로는 기본적인 JavaScript — 을 요구합니다. 노코드 도구가 아니며, 코드를 한 번도 작성해본 적이 없다면 단순한 설정 토글처럼 다루려 할 경우 좌절하게 될 것입니다. 위와 같은 짧은 예제를 읽고 적용하는 것은 의욕 있는 초보자에게 현실적이지만, 다단계 검증이나 PDF 생성처럼 더 복잡한 것을 만들려면 실제 프로그래밍 지식이 필요합니다.
그 장벽은 정확히 스크립트를 작성하지 않고 자동화가 필요한 사람들을 위해 노코드 서드파티 부가기능이 메우는 격차이며, 완전히 다른 문제 — 코드를 전혀 건드리지 않고 모바일에서 폼 자체를 만들고 관리하는 것 — 를 위해 FormMaker 같은 전용 앱이 메우는 격차와 같습니다. 어느 쪽도 깊은 커스터마이징을 위한 Apps Script를 대체하지는 않지만, 어느 쪽도 그것을 요구하지 않습니다.
자주 묻는 질문
Google Apps Script란 무엇인가요?
Google Apps Script는 Forms, Sheets, Gmail을 포함한 Google Workspace 앱을 자동화하고 확장하기 위한 Google의 내장 JavaScript 기반 플랫폼입니다. Google 서버에서 무료로 실행되며 별도의 설치가 필요 없습니다.
Google 설문지가 누군가 제출할 때 자동으로 이메일을 보낼 수 있나요?
기본적으로는 안 됩니다. Google 설문지에는 제출할 때마다 폼 소유자에게 이메일을 보내는 내장 설정이 없습니다. Apps Script는 새 응답이 들어올 때마다 작은 트리거 함수를 실행해 이를 추가할 수 있습니다.
Apps Script를 사용하려면 코딩을 알아야 하나요?
네, 최소한 기본적인 JavaScript는 알아야 합니다. Apps Script는 노코드 도구가 아니라 실제 코딩 환경입니다. 코드를 작성하고 싶지 않다면 노코드 부가기능이나 전용 앱을 찾아보세요.
Google 설문지의 Apps Script 에디터는 어디서 여나요?
폼에서 점 세 개 메뉴로 이동해 Script editor를 선택하거나, 연결된 Google 시트를 열어 Extensions > Apps Script로 이동하세요.
Apps Script가 하루에 보낼 수 있는 이메일 수에 제한이 있나요?
네. Apps Script는 일일 이메일 발송 할당량을 적용하며, 무료 개인 Gmail 계정보다 Google Workspace 계정에서 더 높습니다. 제출할 때마다 이메일을 보내는 대량 폼은 이 상한선에 도달할 수 있으므로, 바쁜 하루 중간에 이메일이 발송되지 않는다면 확인해볼 가치가 있습니다.