구글 폼 제출 → 상담신청서 PDF 자동생성 과정
이번 시간에는 구글 폼으로 받은 상담 신청 데이터를 자동으로 PDF로 변환하는 과정을 살펴보겠습니다. 이 과정은 여러 단계로 이루어져 있으며, 때로는 예상치 못한 문제에 부딪힐 수 있습니다. 하지만 이런 과정을 통해 우리는 더 나은 자동화 시스템을 만들 수 있습니다.
프로젝트 시작
우리의 목표는 예비 창업자가 구글 폼에 응답하면, 그 데이터가 구글 시트와 연결되어 PDF로 자동 생성되고, 이메일로 발송되는 시스템을 만드는 것입니다. 이를 위해 우리는 구글의 앱스스크립트를 활용할 것입니다.
먼저, 우리는 다음과 같은 단계를 완료했습니다:
- 구글 폼 생성
- 상담 신청서 양식 시트 생성
이제 우리가 해야 할 일은:
- 구글 폼과 구글 시트 연결
- PDF 자동 생성
- 이메일 자동 발송
프로젝트 설정
프로젝트를 시작하기 위해, 우리는 클로드(Claude)라는 AI 도구를 활용했습니다. 클로드에게 우리의 프로젝트 목표를 설명하고, 필요한 코드와 설정을 요청했습니다.
function onFormSubmit(e) {
// 폼 제출 시 실행되는 함수
var response = e.response;
var itemResponses = response.getItemResponses();
// 응답 데이터를 객체로 변환
var data = {};
for (var i = 0; i < itemResponses.length; i++) {
var item = itemResponses[i];
data[item.getItem().getTitle()] = item.getResponse();
}
// PDF 생성 함수 호출
createPDFFromTemplate(data);
}
function createPDFFromTemplate(data) {
// PDF 템플릿 시트 ID
var templateId = 'YOUR_TEMPLATE_SHEET_ID';
var templateSheet = SpreadsheetApp.openById(templateId).getSheetByName('상담 양식');
// 새 스프레드시트 생성
var newSpreadsheet = SpreadsheetApp.create(data['이름'] + '_상담신청서_' + new Date().toISOString().split('T')[0]);
var sheet = newSpreadsheet.getActiveSheet();
// 템플릿 복사
templateSheet.copyTo(newSpreadsheet);
newSpreadsheet.deleteSheet(sheet);
sheet = newSpreadsheet.getSheetByName('상담 양식 복사본');
sheet.setName('상담 양식');
// 데이터 입력
for (var key in data) {
var cell = sheet.createTextFinder(key).findNext();
if (cell) {
cell.offset(0, 1).setValue(data[key]);
}
}
// PDF로 변환
var pdfFile = DriveApp.getFileById(newSpreadsheet.getId()).getAs('application/pdf');
var pdfFolder = DriveApp.getFolderById('YOUR_PDF_FOLDER_ID');
pdfFolder.createFile(pdfFile);
// 스프레드시트 삭제
DriveApp.getFileById(newSpreadsheet.getId()).setTrashed(true);
Logger.log('PDF 생성 완료');
}
이 코드는 폼이 제출될 때 자동으로 실행되며, 제출된 데이터를 기반으로 PDF를 생성합니다.
문제 해결 과정
코드를 실행하면서 우리는 여러 가지 문제에 직면했습니다. 예를 들어:
- 템플릿 시트의 병합된 셀 복사 문제
- 체크박스 데이터 처리 문제
- 로그 부족으로 인한 디버깅 어려움
이러한 문제들을 해결하기 위해 우리는 다음과 같은 접근 방식을 사용했습니다:
- 코드에 더 많은 로그를 추가하여 문제 발생 지점을 파악
- 템플릿 복사 과정을 더 세밀하게 조정
- 데이터 처리 로직을 개선
최종 결과
여러 차례의 시도 끝에, 우리는 어느 정도 작동하는 시스템을 만들어냈습니다. 하지만 여전히 개선의 여지가 있습니다. 예를 들어, PDF 생성 결과가 완벽하지 않아 추가적인 조정이 필요합니다.
교훈
이 프로젝트를 통해 우리는 다음과 같은 교훈을 얻었습니다:
- 초기 단계에서 충분한 로그를 추가하는 것이 디버깅에 큰 도움이 됩니다.
- 복잡한 시스템을 만들 때는 단계별로 테스트하며 진행하는 것이 중요합니다.
- AI 도구를 활용하면 개발 과정을 빠르게 진행할 수 있지만, 결과를 항상 검증해야 합니다.
- 자동화 시스템을 만드는 데 시간이 걸리더라도, 장기적으로는 많은 시간을 절약할 수 있습니다.
다음 단계
이 프로젝트를 더욱 발전시키기 위해 우리는 다음과 같은 작업을 계획할 수 있습니다:
- PDF 생성 결과 개선
- 이메일 자동 발송 기능 추가
- 에러 처리 로직 강화
- 사용자 인터페이스 개선
이러한 과정을 통해 우리는 더욱 강력하고 유용한 자동화 시스템을 만들 수 있을 것입니다.
주요 내용의 사용방법 20단계 설명
- 구글 드라이브에 접속하여 새로운 구글 시트를 생성합니다.
- 생성된 시트에서 '도구' 메뉴를 클릭하고 '스크립트 편집기'를 선택합니다.
- 스크립트 편집기에서 제공된 코드를 붙여넣습니다.
- 코드 내의 'YOUR_TEMPLATE_SHEET_ID'와 'YOUR_PDF_FOLDER_ID'를 실제 사용할 시트와 폴더의 ID로 교체합니다.
- 파일 메뉴에서 '저장'을 클릭하여 스크립트를 저장합니다.
- 구글 폼을 생성하고, 필요한 질문들을 추가합니다.
- 생성된 폼의 '응답' 탭으로 이동하여 '스프레드시트에서 응답 보기' 옵션을 선택합니다.
- 새로운 스프레드시트를 생성하거나 기존 스프레드시트를 선택하여 폼 응답을 연결합니다.
- 연결된 스프레드시트로 이동하여 '도구' 메뉴에서 '스크립트 편집기'를 선택합니다.
- 앞서 작성한 스크립트를 이 편집기에 붙여넣습니다.
- '리소스' 메뉴에서 '현재 프로젝트의 트리거'를 선택합니다.
- '트리거 추가' 버튼을 클릭하여 새로운 트리거를 생성합니다.
- 실행할 함수로 'onFormSubmit'을, 이벤트 소스로 '스프레드시트에서', 이벤트 유형으로 '양식 제출 시'를 선택합니다.
- 트리거 설정을 저장합니다.
- 구글 드라이브에서 PDF 파일을 저장할 새 폴더를 생성합니다.
- 생성된 폴더의 ID를 복사하여 스크립트의 'YOUR_PDF_FOLDER_ID' 부분에 붙여넣습니다.
- 템플릿으로 사용할 상담 양식 시트를 생성하고, 필요한 형식을 갖춥니다.
- 템플릿 시트의 ID를 복사하여 스크립트의 'YOUR_TEMPLATE_SHEET_ID' 부분에 붙여넣습니다.
- 모든 설정이 완료되면, 구글 폼에 테스트 응답을 제출합니다.
- 지정된 폴더에 PDF 파일이 생성되었는지 확인하고, 필요한 경우 스크립트를 수정하여 결과를 개선합니다.
이 과정을 따라하면, 구글 폼 제출 시 자동으로 PDF 상담신청서가 생성되는 시스템을 구축할 수 있습니다. 하지만 실제 환경에서는 여러 가지 예외 상황이 발생할 수 있으므로, 충분한 테스트와 지속적인 개선이 필요합니다.