[반복되는 폼 자동화] 시리즈 안내
1편: 도입 – 왜 자동화가 필요했을까?
2편: 실전 – 구글 앱스 스크립트로 자동 폼 만들기 (현재 글)
3편: 트리거 활용 – 완전 자동화의 완성
각 편은 독립적으로 읽을 수 있으며, 시리즈 전체를 따라오시면 자동화의 모든 과정을 쉽게 익히실 수 있습니다.
👉 다음 편이 궁금하다면 [3편: 트리거 활용 – 완전 자동화의 완성]를 확인해보세요!
실전! 자동 폼 생성과 응답 처리 – 광고 신청 업무를 완전히 자동화하다
“폼은 만들었고, 공유도 했는데... 시트가 또 꼬였네.”
광고 신청 업무를 담당하면서 내가 가장 자주 들었던 말이다.
매달 반복되는 업무지만, 그때마다 꼭 하나씩 빠지거나 어긋난다.
날짜가 틀렸거나, 응답 시트가 덮여버렸거나, 보기용 파일이 빠져 있거나.
작은 실수가 쌓이면 결국 "사람이 또 실수했네"라는 말이 따라붙는다.
그래서 이 업무 전체를 자동화하기로 했다.
단순히 폼 하나 만드는 수준이 아니라, 신청부터 정리, 공유까지 전 과정을 코드가 처리하도록 구성했다.
반복되는 업무, 코드가 대신하면 생기는 일
이번에 자동화한 흐름은 아래와 같다.
- 매월 말, 다음 달 광고 신청용 구글 폼 자동 생성
- 응답은 스프레드시트에 자동 저장
- 응답이 들어오면 통계, 현황, 요약 시트까지 자동 갱신
- 외부에 공유할 보기용 파일도 함께 동기화
이 과정을 통해 달라진 점은 단순하다.
사람이 하지 않아도 된다.
1. 폼은 자동으로 만들어진다
광고 신청은 매달 1일부터 받는다.
그래서 매달 25일, 아래와 같은 코드가 알아서 폼을 만들어준다.
const form = FormApp.create(${month}월 광고 신청);
form.setTitle(${month}월 광고 일정 신청);
form.addTextItem().setTitle('업체명').setRequired(true);
제목과 설명은 월별로 바뀌고
업체명을 필수 입력으로 받아야 다음 단계로 이어질 수 있도록 설계했다.
2. 주차별 체크박스 그리드 항목 생성
광고는 주차별로 신청할 수 있다.
그래서 해당 월의 날짜를 기준으로 몇 주차까지 있는지 계산하고,
각 주차마다 날짜 + 평일/주말 패키지를 포함하는 체크박스 그리드를 생성한다.
weeks.forEach((week) => {
const colLabels = [];
for (let d = week.start; d <= week.end; d++) {
const date = new Date(year, month - 1, d);
const dayName = weekdays[date.getDay()];
colLabels.push(${month}/${d}(${dayName}));
}
colLabels.push('평일 패키지');
colLabels.push('주말 패키지');
form.addCheckboxGridItem()
.setTitle([${week.label}] 광고 신청)
.setRows(priceTypes)
.setColumns(colLabels)
.setRequired(false);
});
행(rows)에는 인기/추천 광고 유형이 들어간다.
열(columns)에는 날짜와 패키지 이름이 들어간다.
3. 응답 데이터를 저장하고, 보기용 파일도 함께 만든다
응답 시트는 현재 작업 중인 스프레드시트에 자동으로 연결된다.
form.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId());
이후 별도로 만들어두는 공유용 보기 시트도 함께 구성된다.
캘린더 형태로 신청 현황을 볼 수 있는 구글 스프레드시트를 하나 더 만들어서,
이 데이터가 그대로 복사되도록 자동화했다.
const reportSpreadsheet = SpreadsheetApp.create(${year}${monthStr} 광고 신청 보기용);
DriveApp.getFileById(reportSpreadsheet.getId())
.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
그 결과, 신청자들은 폼을 제출하자마자 곧바로 신청 현황을 확인할 수 있다.
4. 응답이 들어오면 시트들이 자동으로 갱신된다
폼이 제출되면, 그 순간부터 아래 시트들이 자동으로 정리된다.
- 통계 시트
- 업체별 신청 현황
- 광고 신청 캘린더
- 외부 보기용 공유 시트
- 주차별 패키지 요약
“언제 이런 걸 다 정리했지?” 싶을 만큼 빠르게 자동으로 갱신된다.
그 비밀은 응답 후 자동으로 작동하는 트리거 함수에 있다.
다음 편 예고: 트리거로 완성하는 완전 자동화
다음 글에서는 구글 앱스 스크립트의 트리거를 활용해
응답 후 자동 실행과 시간 기반 완전 자동화까지
어떻게 구현하는지 소개할 예정입니다.
✍️ “사람이 실수하지 않는 구조, 트리거로 완성해 보세요.”
[반복되는 폼 자동화] 시리즈 안내
1편: 도입 – 왜 자동화가 필요했을까?
2편: 실전 – 구글 앱스 스크립트로 자동 폼 만들기 (현재 글)
3편: 트리거 활용 – 완전 자동화의 완성
각 편은 독립적으로 읽을 수 있으며, 시리즈 전체를 따라오시면 자동화의 모든 과정을 쉽게 익히실 수 있습니다.
👉 다음 편이 궁금하다면 [3편: 트리거 활용 – 완전 자동화의 완성]를 확인해보세요!
'성장과 기술' 카테고리의 다른 글
| AWS EC2에서 Docker 빌드 중 “no space left on device” 오류 해결기 (0) | 2025.07.10 |
|---|---|
| GAS + Lambda로 정산 데이터 자동 수집, 가공, 리포트 발송하기 (0) | 2025.06.27 |
| 왜 정산 자동화가 필요한가 (0) | 2025.06.27 |
| 3편: 트리거 활용 - 완전 자동화의 완성 (2) | 2025.06.27 |
| 1편: 도입 – 왜 자동화가 필요했을까? (0) | 2025.06.26 |