회고 리포트 준비 2단계: 활동 로그 데이터를 분석하여 데일리 리포트 만들기 따라하기

🗒️ 소개

1단계에서 기록된 시간별 활동 로그 데이터를 활용해 자동 분석 및 리포트 발송 시스템을 구축했습니다. 매일 아침 자동으로 요약된 리포트를 이메일로 받고, 웹 대시보드에서 그래프로 시각화된 통계를 확인할 수 있게 하는 것이 목표였습니다. 회고를 정리하고 하루를 되돌아보는 습관을 만들기 위해 시도했습니다.
Hero 스터디장님이 실습 가이드와 setup files 를 잘 준비해주셔서 어렵지 않게 완성할 수 있었습니다. 🌤️

📝 진행 방법

🛠️ 사용 도구 및 활용 방식

  • Google Apps Script: 전체 자동화 로직 작성

  • Google Sheets: 원본 데이터 저장 및 분석 대상

  • Gmail API: HTML 이메일 자동 발송

  • Chart.js + HTML 템플릿: 웹 대시보드 구성

▶️ 주요 구현 흐름

  1. Apps Script 프로젝트 생성

    • 기존 시간별 활동 로그 스프레드시트에서 Apps Script 열기

    • 프로젝트 이름: Daily Log Reporter

  2. 코드 구성 (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(): 현재 설정된 자동화 트리거가 정상적으로 있는지 확인하는 함수

  1. HTML 템플릿 구성 (Report.html)

    • Chart.js 기반 시각화 포함 (라인 그래프, 도넛 차트 등)

    • 감정노트, 고성과/저성과 시간대까지 반영

  2. 웹앱 배포

    • 웹 URL 생성 → 언제든 접속해서 확인 가능

  3. 이메일 자동 발송 테스트

    • testDailyReport() 함수로 메일 발송 여부 확인

📊 데일리 리포트와 이메일

웹사이트 대시보드 스크린샷

✨ 구글 시트에 저장된 데일리 리포트

한국어 텍스트가 포함된 Google 문서의 스크린샷

🌈 결과와 배운 점

  • 시간대 별로 활동로그를 기록하는 루틴이 생겼고 앞으로 다음날 아침 자동으로 한눈에 나의 하루를 시각화해서 볼 수 있는 리포트와 AI의 피드백이 도착하면 무심히 흘려 보내던 나의 하루를 파악하고 기록할 수 있겠구나 하는 기대가 생겼습니다.

  • Chart.js를 활용한 시각화 덕분에 시간대별 집중도, 작업 분포를 쉽게 확인할 수 있어 좋았습니다.

  • Hero 스터디 장님의 이메일 템플릿 디자인과 데일리 리포트 HTML 구조를 보며 웹 디자인에 대한 감도 얻을 수 있었습니다.

✅ 시행착오 및 팁

  • 처음에 구글 시트에 활동 로그 기록 시트의 이름을 앱스 스크립트 코드에 있는 "Daily Log"와 일치 시키지 않아서 오류가 발생해서 시트 이름을 "Daily Log"로 바꾼 후 정상 동작했습니다.

  • AI 피드백을 위해서는 AI API key가 필요한데 코드에 직접 API key를 넣는 것은 보안상 위험하므로 앱스 스크립트의 좌측 메뉴 하단에서 프로젝트 설정을 클릭해서 스크립트 속성에 추가하는 것이 좋습니다.
    이 때 속성에는 GEMINI_API_KEY , 값에는 발급 받은 Gemini API key 를 넣으면 됩니다.

    'appsync daily reporter'라는 단어가 포함된 페이지 스크린샷


    (Gemini API key 는 Google AI Studio 에서 Get API key 를 클릭해서 받으면 됩니다.)

    구글 AI 스튜디오 스크린샷

🧭 도움 받은 글

  • Hero 스터디 장님의 Apps Script HTML 템플릿 설치 가이드.pdf 와 setup-files.zip 파일

💠 마무리 메시지

기록하는 것만으로도 큰 인사이트를 얻을 수 있지만, 이를 자동 분석 & 시각화까지 연결하니 ‘데이터로 하루를 성찰’하는 루틴이 완성되는 느낌이었습니다. 하루 1분만 투자해 기록해두면, 나중에는 100배의 의미로 돌아오는 것 같아요 💪

2
2개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요