[반복되는 폼 자동화] 시리즈 안내
1편: 도입 – 왜 자동화가 필요했을까?
2편: 실전 – 구글 앱스 스크립트로 자동 폼 만들기
3편: 트리거 활용 – 완전 자동화의 완성 (현재 글)
각 편은 독립적으로 읽을 수 있으며, 시리즈 전체를 따라오시면 자동화의 모든 과정을 쉽게 익히실 수 있습니다.
트리거로 완성하는 완전 자동화 – 반복 업무에서 완전히 손을 떼다
광고 신청 폼은 자동으로 생성되고,
응답 시트는 보기 좋게 정리되며,
공유용 시트도 알아서 완성된다.
이 시점에서 드는 생각은 하나다.
"그럼 이제 이걸 매달 누가 실행하지?"
사람이 버튼을 누르지 않아도
매달 같은 날, 같은 시간에
모든 게 자동으로 시작되면 완벽하다.
이번 편에서는 그 마지막 퍼즐 – 트리거에 대해 이야기하려고 한다.
1. 트리거는 자동화의 관제탑이다
자동화 코드를 아무리 잘 짜도
언제, 어떻게 실행될지 정해두지 않으면 동작하지 않는다.
그래서 구글 앱스 스크립트에서는
2가지 방식으로 트리거를 설정할 수 있다:
- 1. 응답 기반 트리거 – 사용자가 폼을 제출했을 때
- 2. 시간 기반 트리거 – 매월 25일 오전 9시에 자동 실행되도록
2. 응답 트리거: 제출 즉시 후처리 자동 실행
광고 신청 폼이 제출되면,
자동으로 아래 트리거 함수가 실행된다.

function onFormSubmit(e) {
const nextMonth = new Date(new Date().getFullYear(), new Date().getMonth() + 1, 1);
const year = nextMonth.getFullYear();
const month = nextMonth.getMonth() + 1;
updateStatsUpdate(year, month); // 통계 시트 갱신
updateCompanyByDateSheet(year, month); // 업체별 시트 갱신
updateMonthlyCalendarSheet(year, month); // 캘린더 시트 갱신
copyCalendarSheetToReportSheet(year, month); // 공유용 시트 갱신
generateWeeklyPackageSummary(year, month); // 패키지 요약 갱신
}사용자가 신청을 완료하자마자,
데이터를 정리하고, 통계를 업데이트하고, 공유 파일까지 완성된다.
이제 더 이상
“오늘 누가 신청했는지 확인해볼까?”
할 필요가 없다.
신청되면 바로 시스템이 반영한다.
3. 수동 실행도 필요하다 – 메뉴 버튼 구성
개발자 입장에서만 자동화가 있으면 안 된다.
누구나 직접 실행할 수 있어야 한다.
그래서 시트 상단에 메뉴 버튼을 추가했다:
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu('광고 관리')
.addItem('📅 광고 신청폼 생성(다음달)', 'createAdFormForNextMonth')
.addItem('🎯 추첨 실행(다음달)', 'runLotteryForNextMonth')
.addToUi();
}실수로 폼을 지웠을 때 다시 만들 수 있고,
매달 작업이 늦어졌을 때 수동으로 폼 생성이 가능하다.
이 메뉴 덕분에,
누가 언제든지 필요한 기능을 클릭 한 번으로 실행할 수 있게 되었다.
4. 시간 기반 트리거 – 매달 25일 오전 9시, 자동으로 실행
진짜 자동화는 사람이 신경조차 쓰지 않는 구조다.
그래서 매월 말일,
자동으로 다음 달 광고 신청 폼이 생성되도록
시간 기반 트리거를 설정했다.
▶ 설정 방법
Apps Script > 편집기 > 좌측 시계 아이콘 클릭 (Triggers)createAdFormForNextMonth 함수에 시간 기반 트리거 연결
예:
- 월별 반복(Month timer)
- 매달 25일
- 오전 9시

이제는 사람이 아무 것도 하지 않아도
매달 25일 아침이면 폼이 생성되고 공유된다.
5. 에러 감지와 로그 확인 – 안정성도 챙기자
자동화는 멈췄을 때 빨리 감지할 수 있어야 한다.
그래서 아래 팁도 함께 적용했다:
Logger.log(...)를 코드 중간중간 넣어, 실행 로그 추적 가능- 필요한 경우
try-catch로 감싸고, 오류를 로그로 남긴다 - 앱스 스크립트 실행기(Executions)에서 상세 로그 확인
예:
try {
copyCalendarSheetToReportSheet(year, month);
} catch (error) {
Logger.log('복사 실패: ' + error.message);
}마무리하며
이제는 광고 신청 업무에서
사람이 하는 일은 아무 것도 없다.
- 폼을 생성하지 않아도 된다
- 응답을 정리하지 않아도 된다
- 시트를 복사하지 않아도 된다
- 결과를 공유하지 않아도 된다
사람이 하지 않아도 되는 구조.
이것이 우리가 구현하고자 했던 완전 자동화의 핵심이다.
🎁 전체 구조 요약
[시간 기반 트리거]
↓
createAdFormForNextMonth()
↓
[구글 폼 + 시트 + 공유 파일 자동 생성]
↓
[사용자 응답]
↓
onFormSubmit(e)
↓
[통계 시트, 업체 시트, 캘린더, 공유 파일 업데이트]시리즈를 마치며
이번 3편 시리즈에서는 반복적인 광고 신청 업무를
어떻게 자동화하고, 사람의 개입 없이도
안정적으로 운영 가능한 구조로 바꿨는지를 나눴다.
자동화는 기술이 아니라 문화다.
반복을 없애고, 실수를 줄이며, 더 중요한 일에 집중할 수 있는 환경을 만드는 것.
이 경험이, 당신의 다른 업무 자동화에도 도움이 되기를 바란다.
다음 편 예고:
이 시리즈는 여기서 마무리지만,
꼬부기아빠의 자동화 실전 사례와 다른 업무에도 적용할 수 있는 팁을
앞으로도 계속 나눌 예정입니다.
✍️ “사람이 실수하지 않는 구조, 트리거로 완성해 보세요.”
'성장과 기술' 카테고리의 다른 글
| AWS EC2에서 Docker 빌드 중 “no space left on device” 오류 해결기 (0) | 2025.07.10 |
|---|---|
| GAS + Lambda로 정산 데이터 자동 수집, 가공, 리포트 발송하기 (0) | 2025.06.27 |
| 왜 정산 자동화가 필요한가 (0) | 2025.06.27 |
| 2편: 실전 – 구글 앱스 스크립트로 자동 폼 만들기 (1) | 2025.06.26 |
| 1편: 도입 – 왜 자동화가 필요했을까? (0) | 2025.06.26 |