구글 시트로 문의 폼 받기 — 홈페이지 문의를 Apps Script로 시트에 쌓는 법
홈페이지 문의 폼의 내용을 구글 시트 한 줄로 쌓는 방법. 시트에 붙이는 Apps Script 웹앱 주소 하나면 됩니다. 만드는 순서와 스팸·개인정보 주의점. 2026년 11월 기준.
문의 폼의 내용을 구글 시트로 받는 가장 가벼운 방법은 시트에 Apps Script를 붙여 웹앱 주소를 하나 만드는 것입니다. 홈페이지 폼이 그 주소로 내용을 보내면, 시트에 한 줄씩 쌓입니다. 별도 서버도 데이터베이스도 필요 없습니다. 코드는 Claude가 쓰고, 내가 하는 일은 붙여 넣고 배포 설정을 고르는 것입니다. (2026년 11월 공식 문서 기준)
전체 그림
방문자가 폼 작성 → 내 홈페이지 → Apps Script 웹앱 주소 → 구글 시트 한 줄 추가
Apps Script 웹앱은 POST 요청이 오면 doPost 함수를 실행합니다. 공식 문서는 웹앱으로 게시하려면 doGet 또는 doPost 함수가 있어야 한다고 안내합니다. 이 doPost가 "받은 내용을 시트에 적는 일"을 합니다.
구글 설문지로 충분한 경우도 많습니다. 폼 모양을 내 홈페이지 디자인에 맞추고 싶을 때만 이 방법을 씁니다. 시트를 창고로 두는 큰 그림은 구글 시트로 하던 일을 웹앱으로에 있습니다.
만드는 순서
- 시트를 만듭니다. 첫 줄에
접수시각, 이름, 연락처, 문의내용처럼 제목 칸을 적습니다 - 시트 메뉴 확장 프로그램 → Apps Script를 엽니다. 시트에 연결된 스크립트라서 시트 주소를 코드에 따로 적지 않아도 됩니다
- Claude가 준 코드를 붙여 넣고 저장합니다. 아래 요청문을 쓰세요
- 배포 → 새 배포에서 유형을 웹 앱으로 고릅니다
- 설정 두 칸을 고릅니다. 실행 계정은 나(Execute as: Me), 액세스 권한은 모든 사용자(Anyone)입니다. 방문자는 구글 로그인 없이 보내야 하므로 이렇게 합니다
- 배포하면 나오는 웹 앱 URL을 복사합니다. 처음에는 내 계정의 권한 승인 창이 뜹니다
- 그 URL을 홈페이지 폼의 전송 주소로 씁니다
메뉴 이름은 구글 업데이트로 바뀔 수 있습니다. 다르게 보이면 공식 웹 앱 안내를 확인하세요.
Claude에게 보낼 요청문
Apps Script 코드와 홈페이지 폼 쪽 코드를 한 번에 받습니다.
구글 시트에 붙일 Apps Script를 만들어 줘. - 웹앱으로 배포해서 POST 요청을 받으면 시트 첫 번째 탭 맨 아래에 한 줄을 추가해. - 칸 순서: 접수시각, 이름, 연락처, 문의내용 - 숨겨 둔 입력칸(honeypot)에 값이 있으면 스팸으로 보고 저장하지 마. - 문의내용이 = 로 시작하면 앞에 작은따옴표를 붙여 수식으로 실행되지 않게 해. 그리고 내 홈페이지 문의 폼이 이 웹앱 주소로 보내도록 폼 코드도 고쳐 줘. 주소 자리는 "여기에_웹앱_URL"로 비워 둬. 배포 방법은 메뉴 이름까지 순서대로 알려 줘.
=로 시작하는 값을 막으라고 시키는 이유가 있습니다. 공식 문서에 따르면 appendRow는 =로 시작하는 값을 수식으로 해석합니다. 방문자가 보낸 글이 수식으로 실행되는 일을 막는 것입니다.
안 될 때 확인할 곳
| 증상 | 먼저 볼 곳 |
|---|---|
| 시트에 안 쌓인다 | 액세스 권한이 "모든 사용자"인지, 폼이 /exec로 끝나는 배포 주소를 쓰는지 |
| 코드를 고쳤는데 그대로다 | 웹앱은 새 버전으로 배포를 수정해야 반영됩니다. 같은 주소는 유지됩니다 |
| 내가 테스트하면 되는데 남은 안 된다 | /dev 주소는 편집 권한이 있는 사람 전용 테스트용입니다. 폼에는 배포 주소를 씁니다 |
| 브라우저 콘솔에 빨간 글씨 | 글씨를 통째로 복사해 Claude에게 보냅니다. 요령은 에러 메시지로 AI와 디버깅하기 |
공식 문서 기준으로 /dev 주소는 최근 저장한 코드를 실행하고 편집 권한자만 쓸 수 있는 개발용입니다. 방문자에게 줄 주소가 아닙니다.
공개하기 전에 볼 것
웹앱 주소는 "누구나 보낼 수 있는 문"입니다. 그래서 아래를 확인합니다.
- ☐ 주소를 아는 누군가가 엉뚱한 글을 보내도 곤란하지 않다 (스팸 방지 칸을 넣었다)
- ☐ 시트 공유 설정이 "링크가 있는 모든 사용자"로 열려 있지 않다
- ☐ 연락처 같은 개인정보를 받는다면 폼 옆에 무엇을 왜 받는지 적었다
- ☐ 시트에 쌓이는 내용 중 필요 없는 것은 받지 않는다
- ☐ 폼을 직접 한 번 보내 보고 시트에 한 줄이 생긴 것을 봤다
웹앱 주소는 홈페이지 소스에 그대로 보입니다. 주소 자체는 숨길 수 없으니, 위 스팸 방지가 방어선입니다. 진짜 비밀(API 키 등)은 여기에 넣지 않습니다. 구분은 API 키는 어디에 두나, 공개 전 점검은 바이브코딩 보안 체크리스트를 보세요. 기록이 어디에 남는지의 기준은 앱의 데이터는 어디에 저장되나에 있습니다.
정리
폼 → Apps Script 웹앱 주소 → 시트 한 줄. 실행 계정은 나, 액세스 권한은 모든 사용자, 폼에는 /exec 배포 주소를 씁니다. 코드 수정은 새 버전 배포로 반영합니다. 스팸 방지와 개인정보 안내를 넣고, 마지막에는 직접 한 번 보내 시트에 쌓이는지 확인합니다. 하루 사용 한도는 계정 종류마다 달라서 공식 할당량 표를 확인하세요.