안녕하세요! 전자동입니다!
앞선 2단계에서는 스마트워치 화면을 캡처해서 제미나이(Gemini)에 넣고 회복 상태를 점검하는 프롬프트를 완성했습니다. 확실히 감으로 달릴 때보다 몸 상태를 객관적으로 파악하는 데 큰 도움이 되었죠. 하지만 달리기를 마치고 땀 흘리며 현관에 들어설 때마다 화면을 일일이 캡처하고, AI 창을 열어 이미지를 올리는 과정 자체가 슬슬 또 하나의 귀찮은 숙제처럼 느껴지기 시작하더라고요. 데이터 분석의 진짜 가치는 '내가 신경 쓰지 않아도 알아서 모이는 환경'에서 나오는 법입니다.
그래서 이번 3단계에서는 매번 반복되던 캡처 노동을 완전히 걷어내기로 했습니다. 달리기를 마치고 스마트워치에서 '운동 종료' 버튼을 누르는 순간, 오늘 달린 날짜, 거리, 시간, 평균 페이스, 평균 심박수가 클라우드 구글 스프레드시트에 한 줄의 정갈한 행(Row)으로 1초 만에 꽂히는 무인 데이터 수집 파이프라인을 구축해 보겠습니다. 코딩 한 줄 몰라도 복사해 붙여넣기만 하면 끝나는 웹훅(Webhook) 템플릿을 준비했으니 그대로 따라오시면 됩니다.
데이터 수동 캡처의 한계: 왜 '웹훅(Webhook)' 파이프라인인가?
매번 운동 앱 화면을 스크린샷으로 남기면 데이터가 스마트폰 갤러리에 흩어져 장기적인 추세를 한눈에 보기 어렵습니다. 주간 단위 페이스 변화나 심박수 안정화 추이를 보려면 결국 표 형태로 데이터가 누적되어야 하죠. 그렇다고 매일 엑셀을 켜서 숫자를 타이핑하는 건 작심삼일로 끝날 확률이 100%입니다.
여기서 우리가 활용할 도구가 바로 웹훅(Webhook)입니다. 개념을 어렵게 생각할 필요가 전혀 없습니다. 스마트폰에게 "달리기가 끝나면, 정해진 인터넷 주소(URL)로 오늘 운동 데이터 묶음을 툭 던져줘!"라고 배달 주문을 넣는 심부름 통로라고 이해하시면 됩니다. 받는 쪽(구글 스프레드시트)에서는 문 앞(웹훅 수신처)에 서 있다가 배달된 상자를 열어 시트의 빈칸에 위에서부터 차곡차곡 내려놓기만 하는 구조인 셈이죠.
구글 시트와 워치를 이어주는 웹훅 수신 템플릿 구축
실전 구현 단계는 딱 두 가지 작업으로 나뉩니다. 첫째는 배달받을 구글 스프레드시트의 문지기(Apps Script)를 세우는 것이고, 둘째는 스마트폰 자동화 도구(아이폰 '단축어' 또는 안드로이드 자동화 앱)에서 운동 완료 시 데이터를 쏘아주도록 연결하는 것입니다.
먼저 구글 드라이브에서 새 스프레드시트를 하나 만듭니다. 시트 첫 행(1행)에 A열부터 E열까지 각각 날짜, 운동시간(분), 거리(km), 평균페이스, 평균심박수라고 적어둡니다. 그리고 상단 메뉴의 [확장 프로그램] ➔ [Apps Script]를 클릭합니다. 기존에 적힌 코드를 지우고 아래 템플릿을 그대로 복사해 붙여넣습니다.
function doPost(e) {
try {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = JSON.parse(e.postData.contents);
// 워치에서 전달받은 5가지 핵심 지표를 스프레드시트 다음 행에 추가
sheet.appendRow([
data.date || new Date().toLocaleDateString(),
data.duration,
data.distance,
data.pace,
data.heartRate
]);
return ContentService.createTextOutput(JSON.stringify({"result": "success"}))
.setMimeType(ContentService.MimeType.JSON);
} catch (error) {
return ContentService.createTextOutput(JSON.stringify({"result": "error", "message": error.toString()}))
.setMimeType(ContentService.MimeType.JSON);
}
}
코드 붙여넣기가 끝났다면 상단 우측의 [배포] ➔ [새 배포]를 누릅니다. 유형을 '웹 앱(Web App)'으로 선택하고, 중요한 점은 액세스 권한을 '모든 사용자(Anyone)'로 설정해야 한다는 것입니다. 그래야 내 스마트폰이 비밀번호 입력 없이 시트로 데이터를 전달할 수 있습니다. 배포를 완료하면 나오는 https://script.google.com/macros/s/.../exec 형태의 웹 앱 URL을 복사해 둡니다. 이 주소가 바로 우리 전용 데이터 배달 우편함입니다.
이제 스마트폰에서 운동 앱(Apple 건강 또는 피트니스 연동 단축어, 안드로이드용 Tasker/Automate 등)의 자동화 트리거를 설정합니다. 트리거 조건은 '러닝 운동이 끝났을 때'로 잡고, 방금 복사한 URL로 [URL 콘텐츠 가져오기(POST 방식)] 액션을 지정하여 JSON 형태로 운동 지표(날짜, 거리, 페이스, 심박수)를 전송하도록 매핑해 두면 파이프라인의 하드웨어 연결은 모두 끝납니다.

데이터 대입 및 실시간 동기화 정상 작동 테스트
시스템을 만들었으니 실제로 데이터가 유실 없이 구글 시트에 꽂히는지 테스트해 볼 차례입니다. 신발을 신고 밖으로 나가기 전에, 스마트폰의 단축어나 API 테스터 도구를 통해 가상의 러닝 데이터 한 건을 웹훅 주소로 전송해 봅니다.
전송 버튼을 누르고 열어둔 구글 스프레드시트 화면을 가만히 바라보고 있으니, 마법처럼 2행 빈칸에 오늘 날짜와 함께 '32분', '5.1km', '6분 15초', '142bpm'이라는 수치가 엔터키를 친 것처럼 순식간에 차곡차곡 기록되더라고요. 오타 하나 없이 깔끔한 데이터가 실시간으로 쌓이는 순간의 쾌감은 비전공자 바이브 코딩에서만 느낄 수 있는 짜릿한 보상입니다.
이로써 매일 운동을 마칠 때마다 땀 묻은 손으로 스크린샷을 찍고 사진첩을 뒤적이던 번거로운 수작업은 완전히 사라졌습니다. 워치는 달리는 동안 심장을 기록하고, 달리기가 끝나는 찰나 구글 클라우드는 나만의 건강 데이터베이스를 0.1초 만에 완성합니다.
이제 원천 데이터가 내 개인 클라우드에 빈틈없이 쌓이기 시작했습니다. 하지만 숫자가 쌓였다고 해서 끝이 아니죠. 이 누적된 데이터를 바탕으로 "오늘 심박수가 조금 높았으니 내일은 조깅을 쉬세요"라거나 "지난주보다 페이스가 10초 안정화되었습니다" 같은 전문 트레이너급 맞춤 피드백을, 내가 손 하나 까딱 안 해도 메신저 푸시 알림으로 띵동 쏴주는 무인 완성형 자동화 시스템은 바로 다음 4편에서 완성해 보겠습니다!
달리기 끝나면 폰으로 맞춤 리포트가 띵동! 구글시트-제미나이-알림 자동화 완성기
구글 Apps Script와 메신저 웹훅을 결합해 운동 직후 AI 회복 피드백을 스마트폰 푸시 알림으로 받아보는 완성형 자동화 스크립트
'AI 실생활 웹앱 개발기' 카테고리의 다른 글
| [건강 자동화] 매번 스크린샷 찍어 묻는 것도 일상, 제미나이(Gemini)에 러닝 기록 분석시키는 실전 대화법 (0) | 2026.11.03 |
|---|---|
| [건강 자동화] 대상포진 후 무너진 몸, 무작정 달리기 대신 스마트워치를 먼저 찬 이유 (0) | 2026.11.03 |
| [업무 자동화] 보고서 야근 끝! 마우스 클릭 한 번으로 완성되는 자동 인터랙티브 대시보드 (0) | 2026.11.01 |
| [업무 자동화] 빈칸, 중복값, 오타 골치 아픈 빅데이터, AI 명령어로 말끔하게 정제하기 (0) | 2026.11.01 |
| [업무 자동화] 폴더에 던져두면 끝! 매주 흩어진 엑셀 파일 30개 10초 만에 하나로 합치기 (0) | 2026.11.01 |