앱스스크립트로 보고서 PDF 무인 생성

업무 자동화4분 읽기

매달 반복되는 보고서 작업만큼 자동화 효과가 뚜렷한 일도 드뭅니다. 광고대행 사업에서는 거래처마다 그 달의 광고비 집계를 정리한 보고서를 만들어 전달합니다. 시트의 숫자를 읽어 보기 좋은 문서로 옮기고 PDF로 바꿔 보내는 이 작업이 거래처 수만큼, 달마다 반복됩니다. 우리는 이 반복을 앱스스크립트로 없앴습니다. 핵심은 보고서 생성의 전 과정을 구글 워크스페이스 안에서 처리해 사람이 매번 실행하지 않아도 매달 알아서 나오게 만든 데 있습니다.

시트 집계를 읽어 문서로 그린다

보고서의 출발점은 거래처 시트의 집계값입니다. 광고비 시트에서 이미 SUMIFS와 QUERY로 계산해 둔 매체별·월별 값을 앱스스크립트가 읽어 옵니다. 집계는 시트가, 문서화는 스크립트가 맡는 분업입니다. 이렇게 나누면 집계 로직을 운영자가 시트에서 직접 확인할 수 있고 스크립트는 그 결과를 표와 문장으로 옮기는 데만 집중합니다.

문서는 구글 문서로 그립니다. 스크립트가 제목, 섹션, 표, 강조 수치를 순서대로 쌓아 A4 한 편의 보고서를 구성합니다. 표의 컬럼 폭을 본문 폭에 맞춰 정렬하고 섹션마다 번호와 구분선을 넣어 읽는 흐름을 잡았습니다. 데이터가 없는 달은 회색으로 비활성 처리해 값이 비어 있는 것이 정상임을 문서에서도 구분했습니다.

PDF로 추출해 전달한다

구글 문서로 완성한 보고서는 그대로 PDF로 추출합니다. 거래처에 전달할 최종 산출물은 편집 가능한 문서가 아니라 고정된 PDF가 적절하기 때문입니다. 스크립트가 문서를 PDF로 변환해 정해진 폴더에 저장하면, 그 폴더의 업로드가 다시 알림으로 이어져 거래처가 보고서 도착을 알게 됩니다. 보고서 생성과 알림이 하나의 흐름으로 연결됩니다.

전 과정이 워크스페이스 안에서 돈다는 점이 이 방식의 결정적 이점입니다. 문서를 그리는 것도, PDF로 바꾸는 것도, 폴더에 저장하는 것도 모두 앱스스크립트가 구글 인프라 위에서 처리합니다. 외부 서버나 별도의 문서 변환 도구가 끼어들지 않으므로, 시간 트리거만 걸어 두면 사람 손 없이 완결됩니다.

시간 트리거로 매달 무인 생성한다

이 보고서는 매월 정해진 날, 정해진 시각에 자동으로 생성되도록 시간 트리거를 걸었습니다. 트리거가 오면 스크립트가 거래처별로 그 달의 보고서를 만들어 PDF까지 뽑아냅니다. 운영자가 달마다 편집기를 열어 실행 버튼을 누를 필요가 없습니다. 물론 필요할 때 즉시 한 건을 만들어 보는 수동 실행 진입점도 함께 두어 중간 점검이나 재발행에도 대응할 수 있게 했습니다.

무인 운영에서 중요한 것은 언제든 같은 결과가 나오는 일관성입니다. 그래서 보고서 디자인을 상수로 고정하고 섹션 번호나 폭 계산 같은 세부를 함수로 규칙화했습니다. 이번 달 보고서와 다음 달 보고서가 같은 틀로 나오므로, 거래처는 매달 익숙한 형태의 문서를 받습니다.

읽는 사람을 배려한 디자인

마지막으로 신경 쓴 것은 읽는 사람입니다. 보고서를 받아 보는 독자 중에는 작은 글씨나 옅은 색을 읽기 어려워하는 분도 있었습니다. 그래서 본문과 보조 텍스트의 색 대비를 충분히 확보하고 흐린 텍스트도 지나치게 연하지 않게 조정했습니다. 화려한 색을 여러 개 쓰는 대신 차분한 단일 강조 체계로 정리해 수치가 명확하게 눈에 들어오도록 했습니다.

이 보고서 자동화는 시트 집계 위에 얹혀 돕니다. 집계 설계는 구글 시트 광고비 자동집계 설계에서, 완성된 PDF가 폴더에 저장될 때 나가는 알림은 드라이브 업로드 폴링 알림에서, 시스템 전체는 구글 시트·앱스스크립트 거래처별 업무 자동화에서 이어집니다.

자주 묻는 질문

보고서 생성을 왜 외부 도구가 아니라 앱스스크립트로 했나요?

전 과정을 구글 워크스페이스 안에 두기 위해서입니다. 문서 작성부터 PDF 추출, 폴더 저장까지 앱스스크립트가 처리하면 외부 서버나 별도 변환 도구가 필요 없고 시간 트리거만으로 무인 실행됩니다. 운영자가 관리해야 할 부품이 늘지 않는다는 점이 이 방식의 핵심 이유였습니다.

매달 자동 생성되는데 중간에 한 건만 다시 만들려면요?

수동 실행 진입점을 함께 두었습니다. 시간 트리거로 매월 자동 생성하는 것과 별개로, 특정 거래처의 보고서를 지금 한 건 만들어 보는 함수를 편집기에서 실행할 수 있습니다. 중간 점검이나 재발행이 필요할 때 자동 일정을 기다리지 않고 즉시 뽑을 수 있습니다.

데이터가 없는 달의 보고서는 어떻게 처리되나요?

값이 비어 있는 것과 실제 0인 것을 구분해 표시합니다. 첫 거래 이전처럼 데이터가 존재할 수 없는 달은 회색으로 비활성 처리해 비어 있는 것이 정상임을 문서에서 드러냅니다. 이렇게 하면 보고서를 받은 사람이 누락과 정상적인 공백을 헷갈리지 않습니다.

#앱스스크립트#구글문서#PDF#보고서자동화

업무자동화 구축이 필요하신가요?

무료 상담 신청