🗒️ 소개
1 단계에서 기록된 시간별 활동 로그 데이터를 활용해 자동 분석 및 리포트 발송 시스템을 구축했습니다. 매일 아침 자동으로 요약된 리포트를 이메일로 받고, 웹 대시보드에서 그래프로 시각화된 통계를 확인할 수 있게 하는 것이 목표였습니다. 회고를 정리하고 하루를 되돌아보는 습관을 만들기 위해 시도했습니다.
Hero 스터디장님이 실습 가이드와 setup files 를 잘 준비해주셔서 어렵지 않게 완성할 수 있었습니다. 🌤️
📝 진행 방법
🛠️ 사용 도구 및 활용 방식
Google Apps Script: 전체 자동화 로직 작성
Google Sheets: 원본 데이터 저장 및 분석 대상
Gmail API: HTML 이메일 자동 발송
Chart.js + HTML 템플릿: 웹 대시보드 구성
▶️ 주요 구현 흐름
Apps Script 프로젝트 생성
기존 시간별 활동 로그 스프레드시트에서 Apps Script 열기
프로젝트 이름:
Daily Log Reporter
코드 구성 (
Code.gs)setupDailyTrigger(): 매일 오전 8시에generateDailyReport함수가 자동으로 실행되도록 예약(트리거) 설정generateDailyReport(): [메인 함수] 데이터 추출, 통계 분석, AI 피드백 생성, 시트 저장, 이메일 발송까지의 전체 과정을 총괄 실행doGet(e): 웹앱 URL로 접속했을 때 실행되며, 브라우저에 리포트 화면(HTML)을 출력getYesterdayDate(): 분석 대상인 '어제' 날짜를 계산 (YYYY-MM-DD 형식)getDateData(targetDate): 'Daily Log' 시트에서 해당 날짜의 데이터만 필터링하여 추출analyzeData(data): 데이터의 평균 만족도/집중도 계산 및 고성과/저성과 구간 분류generateAIInsights(data, stats): [AI 기능] Gemini API를 호출하여 데이터를 바탕으로 칭찬과 조언이 담긴 피드백 생성saveReport(date, ...): 분석된 통계와 AI 피드백을 '데일리 리포트' 시트에 한 줄로 저장sendHtmlEmailReport(date, ...): 통계 그래프와 AI 코멘트가 포함된 예쁜 HTML 이메일을 사용자에게 발송sendNotification(message): 시스템 에러 발생 시 사용자에게 비상 알림 메일 발송formatTime,getScoreClass,getScoreLabel: 시간 포맷 변환 및 점수에 따른 등급(우수/보통/미흡) 반환 헬퍼 함수testDailyReport(): 메인 함수를 수동으로 즉시 실행해보기 위한 테스트 함수testWebApp(): 배포된 웹앱의 URL을 로그로 확인하는 함수checkTriggers(): 현재 설정된 자동화 트리거가 정상적으로 있는지 확인하는 함수
HTML 템플릿 구성 (
Report.html)Chart.js 기반 시각화 포함 (라인 그래프, 도넛 차트 등)
감정노트, 고성과/저성과 시간대까지 반영
웹앱 배포
웹 URL 생성 → 언제든 접속해서 확인 가능
이메일 자동 발송 테스트
testDailyReport()함수로 메일 발송 여부 확인
📊 데일리 리포트와 이메일
웹사이트 대시보드 스크린샷