엑셀 파일 전송은 그만! 파이썬으로 구글 스프레드시트 실시간 업데이트하기

 

지금까지 우리는 파이썬으로 내 컴퓨터(로컬)에 있는 엑셀 파일을 읽고 쓰는 방법을 배웠습니다. 하지만 실무에서는 치명적인 단점이 하나 있습니다. 완성된 .xlsx 파일을 매번 팀원들에게 이메일이나 메신저로 '전송'해야 한다는 점입니다. 만약 데이터가 수정되면 "최종보고서_진짜최종_v2.xlsx" 같은 파일들이 무한히 증식하게 되죠.

이 문제를 완벽하게 해결해 주는 것이 바로 클라우드 기반의 구글 스프레드시트(Google Sheets)입니다. 링크 하나만 공유하면 전 팀원이 항상 최신 데이터를 볼 수 있습니다. 그렇다면 파이썬으로 내가 만든 피벗 테이블이나 크롤링한 데이터를 구글 스프레드시트에 알아서 입력하게 만들 수는 없을까요? '구글 API'를 사용하면 가능합니다!


1. 파이썬에게 구글 출입증(JSON 키) 쥐여주기

파이썬이 내 구글 계정에 함부로 접속해서 시트를 건드리면 안 되기 때문에, 구글에서 정식으로 '서비스 계정(가상의 로봇 계정)'을 만들고 출입증을 발급받아야 합니다.

  1. 구글 클라우드 콘솔에 접속하여 새 프로젝트를 만듭니다.
  2. 'API 및 서비스'에서 Google Drive APIGoogle Sheets API를 찾아 '사용 버튼'을 눌러 활성화합니다.
  3. '사용자 인증 정보' 메뉴에서 '서비스 계정'을 생성하고, JSON 형식의 키 파일을 다운로드합니다. 이 파일이 바로 파이썬의 출입증입니다.
  4. 이 JSON 파일의 이름을 google_key.json으로 바꾸고 파이썬 코드가 있는 폴더에 넣어줍니다.

2. 스프레드시트 공유 권한 열어주기

이 부분이 가장 많이 하는 실수입니다. 다운로드한 JSON 파일을 메모장으로 열어보면 client_email 항목에 아주 긴 가상의 이메일 주소(예: bot-123@project.iam.gserviceaccount.com)가 있습니다.

파이썬이 데이터를 쓸 구글 스프레드시트를 웹 브라우저에서 띄운 뒤, 우측 상단의 [공유] 버튼을 누르고 방금 본 가상 이메일 주소를 '편집자' 권한으로 초대해 주어야 합니다. 그래야 파이썬 봇이 해당 문서에 글을 쓸 수 있습니다.


3. 실전 코드: 파이썬으로 시트에 데이터 꽂아 넣기

코드를 실행하기 전 터미널 창에 pip install gspread oauth2client를 입력하여 구글 API 통신용 도구를 설치해 줍니다.

import gspread
from oauth2client.service_account import ServiceAccountCredentials
import pandas as pd

# 1. 구글 API 출입증 인증 세팅
scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
creds = ServiceAccountCredentials.from_json_keyfile_name('google_key.json', scope)
client = gspread.authorize(creds)

# 2. 데이터를 입력할 구글 스프레드시트 파일 이름으로 열기
# (브라우저에서 공유해둔 파일의 정확한 이름을 적어주세요)
doc = client.open('실시간_매출보고서')

# 3. 첫 번째 시트(워크시트) 선택
sheet = doc.sheet1

# 4. 시트에 데이터 업데이트하기 (예: A1 셀부터 판다스 표 밀어넣기)
# (앞선 시리즈에서 만든 피벗 테이블 df가 있다고 가정)
df = pd.DataFrame({'부서명': ['영업1팀', '영업2팀'], '매출액': [500, 700]})

# 데이터프레임을 리스트 형태로 변환하여 구글 시트 양식에 맞춤
sheet.update([df.columns.values.tolist()] + df.values.tolist())

print("구글 스프레드시트 실시간 업데이트 완료!")

이 코드를 실행하고 구글 스프레드시트 창을 띄워놓고 지켜보세요. 마우스와 키보드에 손을 대지 않았는데도 빈 셀들에 글자가 다다닥 채워지는 마법 같은 광경을 목격할 수 있습니다.


클라우드와 파이썬의 만남, 진정한 대시보드 구축

이제 여러분이 19편에서 세팅한 '새벽 6시 스케줄러'가 돌 때마다, 엑셀 파일이 컴퓨터에 저장되는 것을 넘어 팀 전체가 보고 있는 구글 스프레드시트가 실시간으로 갱신됩니다. 여러분은 복잡하게 메일을 쏠 필요도 없이 "팀장님, 아침마다 즐겨찾기 해두신 구글 시트 링크만 새로고침 하시면 됩니다"라고 멋지게 말씀하시면 됩니다. 파이썬으로 사내 전용 실시간 대시보드를 구축하신 겁니다!


▶ 핵심 요약

  • 파이썬으로 구글 스프레드시트를 제어하려면 구글 클라우드 콘솔에서 API를 활성화하고 '서비스 계정 JSON 키'를 발급받아야 합니다.
  • 서비스 계정의 가상 이메일을 작업하려는 구글 스프레드시트에 '편집자'로 반드시 초대(공유)해야 권한 오류가 나지 않습니다.
  • gspread 라이브러리를 사용하면 판다스의 데이터프레임이나 리스트 형태의 데이터를 웹상의 시트에 실시간으로 밀어 넣을 수 있습니다.

엑셀, 이메일, 메신저, 구글 시트까지... 이제 실무에서 쓰는 거의 모든 도구를 자동화했습니다. 다음 편에서는 대망의 '웹 브라우저 마우스/키보드 자동 조작 (Selenium)'을 통해, 사내 인트라넷 로그인이나 ERP 시스템 클릭까지 파이썬에 맡겨버리는 궁극의 기술을 만나보겠습니다.


여러분의 회사에서는 로컬 엑셀 파일(.xlsx)과 구글 스프레드시트 중 어느 것을 더 자주 활용하시나요? 클라우드 문서를 도입했을 때 가장 편리했던 점은 무엇이었는지 댓글로 남겨주세요!



댓글

이 블로그의 인기 게시물

엑셀로는 안 열리는 200만 행 대용량 데이터, 파이썬으로 1초 만에 요약하기

수식이 걸린 엑셀 데이터, 파이썬으로 불렀더니 NaN이 뜨는 이유와 해결법

"파일을 찾을 수 없습니다" - 경로 오류(Path error)가 발생하는 이유와 대처법