구글 스프레드시트, 파이썬으로 자동으로 읽고 쓰기
구글 스프레드시트, 파이썬으로 자동으로 읽고 쓰기 (완성 코드 공개)
"팀원들이 각자 구글 시트에 입력한 데이터를 매일 아침 취합해서 정리해야 하는데…", "웹에서 수집한 데이터를 구글 시트에 자동으로 업데이트하면 좋겠는데…"
구글 스프레드시트는 팀 협업에 편리하지만, 데이터를 매번 손으로 입력하거나 다른 파일에서 복사해 붙여넣는 작업은 번거롭고 실수가 납니다. 파이썬을 한 번만 세팅해두면 구글 시트의 데이터를 자동으로 읽어오고, 원하는 내용을 자동으로 입력하고, 기존 데이터를 업데이트하는 것까지 모두 처리할 수 있습니다.
1단계: 구글 API 설정 (최초 1회만)
파이썬에서 구글 스프레드시트에 접근하려면 구글 클라우드에서 API 키를 발급받아야 합니다. 아래 순서대로 진행하세요.
- Google Cloud Console(console.cloud.google.com)에 접속해 구글 계정으로 로그인합니다.
- 상단 "프로젝트 선택" → "새 프로젝트" 클릭 → 프로젝트 이름(예: "파이썬자동화") 입력 후 만들기
- 왼쪽 메뉴 "API 및 서비스" → "라이브러리" 클릭
- 검색창에 "Google Sheets API" 검색 → 클릭 → "사용 설정"
- 같은 방법으로 "Google Drive API"도 검색해서 "사용 설정"
- 왼쪽 메뉴 "API 및 서비스" → "사용자 인증 정보" → "사용자 인증 정보 만들기" → "서비스 계정" 선택
- 서비스 계정 이름 입력(예: "sheets-bot") → 만들기 → 완료
- 생성된 서비스 계정 클릭 → "키" 탭 → "키 추가" → "JSON" 선택 → 다운로드
다운로드한 JSON 파일을 credentials.json으로 이름을 바꾸고 코드 파일과 같은 폴더에 저장합니다.
⚠️ 마지막 설정: 자동화할 구글 스프레드시트를 열고 오른쪽 상단 "공유" 버튼 클릭 → JSON 파일 안의 "client_email" 값(xxxx@xxxx.iam.gserviceaccount.com 형태)을 복사해서 편집자 권한으로 공유합니다. 이 설정이 없으면 파이썬에서 접근이 거부됩니다.
2단계: 준비물 설치
터미널(윈도우: CMD 또는 파워셸)을 열고 아래 명령어를 실행하세요:
pip install gspread google-auth pandas
gspread는 파이썬에서 구글 스프레드시트를 다루는 전용 라이브러리입니다. google-auth는 1단계에서 발급한 JSON 키로 구글 API에 인증하는 라이브러리이고, pandas는 데이터를 표 형태로 처리하는 데 사용합니다.
3단계: 완성 코드
아래 코드를 그대로 복사해서 메모장에 붙여넣고, gsheet_auto.py로 저장하세요. 저장 시 파일 형식은 "모든 파일", 인코딩은 UTF-8로 설정합니다. credentials.json 파일과 같은 폴더에 저장해야 합니다.
import gspread
from google.oauth2.service_account import Credentials
import pandas as pd
from datetime import datetime
# ① 설정
CREDENTIALS_FILE = "credentials.json" # ← JSON 키 파일명
SPREADSHEET_NAME = "팀 업무 현황" # ← 구글 시트 제목 (정확히 일치해야 함)
SHEET_NAME = "Sheet1" # ← 시트 탭 이름
# ② 구글 API 인증
SCOPES = [
"https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/drive",
]
creds = Credentials.from_service_account_file(CREDENTIALS_FILE, scopes=SCOPES)
client = gspread.authorize(creds)
print(" ✔ 구글 API 인증 완료")
# ③ 시트 열기
spreadsheet = client.open(SPREADSHEET_NAME)
sheet = spreadsheet.worksheet(SHEET_NAME)
print(f" ✔ 시트 열기 완료: '{SPREADSHEET_NAME} > {SHEET_NAME}'")
# ④ 데이터 읽기 (전체)
all_data = sheet.get_all_records() # 1행(헤더) 기준으로 딕셔너리 리스트 반환
df = pd.DataFrame(all_data)
print(f" ✔ 데이터 읽기 완료: {len(df)}행 × {len(df.columns)}열")
print(df.head()) # 상위 5행 미리보기
# ⑤ 새 행 추가 (시트 맨 아래에 추가)
new_row = [
datetime.now().strftime("%Y-%m-%d"), # 날짜
"신규 거래처", # 거래처명
"홍길동", # 담당자
1500000, # 금액
"진행중", # 상태
]
sheet.append_row(new_row)
print(f" ✔ 새 행 추가 완료: {new_row}")
# ⑥ 특정 셀 업데이트 (B2 셀을 수정하는 예시)
sheet.update("B2", "업데이트된 값")
print(f" ✔ B2 셀 업데이트 완료")
print(f"\n✅ 완료! 구글 시트 자동화 성공")
4단계: 실행 방법
- 코드 ① 설정의
SPREADSHEET_NAME에 자동화할 구글 시트 제목을 정확히 입력합니다. 대소문자·공백까지 일치해야 합니다. SHEET_NAME에 탭 이름을 입력합니다. 기본값은 "Sheet1"이지만, 탭 이름을 변경했다면 변경된 이름을 입력합니다.- 코드 ⑤의
new_row내용을 본인 시트 열 구조에 맞게 수정합니다. - 터미널에서 아래 명령어로 실행합니다:
python gsheet_auto.py
정상 실행 시 터미널에 이렇게 출력됩니다:
✔ 구글 API 인증 완료
✔ 시트 열기 완료: '팀 업무 현황 > Sheet1'
✔ 데이터 읽기 완료: 15행 × 5열
날짜 거래처명 담당자 금액 상태
0 2026-05-01 A주식회사 홍길동 5200000 완납
1 2026-05-03 B연구소 김철수 980000 미납
...
✔ 새 행 추가 완료: ['2026-05-29', '신규 거래처', '홍길동', 1500000, '진행중']
✔ B2 셀 업데이트 완료
✅ 완료! 구글 시트 자동화 성공
5단계: 자주 발생하는 오류와 해결법
오류 1: SpreadsheetNotFound
구글 시트 제목이 코드와 다르거나, 서비스 계정 이메일로 시트를 공유하지 않은 경우입니다. 1단계 마지막 설정에서 client_email 값으로 시트를 편집자 권한으로 공유했는지 다시 확인하세요.
오류 2: APIError 429 (Too Many Requests)
구글 Sheets API는 1분에 60회 요청 제한이 있습니다. 반복문 안에서 셀을 한 개씩 업데이트하면 금방 한도를 초과합니다. 여러 셀을 한꺼번에 업데이트할 때는 sheet.update()에 2차원 배열을 한 번에 넘기세요:
sheet.update("A2:C4", [["값1", "값2", "값3"], ["값4", "값5", "값6"]])
오류 3: DefaultCredentialsError
credentials.json 파일이 코드 파일과 같은 폴더에 없는 경우입니다. 두 파일이 같은 폴더 안에 있는지 확인하거나, CREDENTIALS_FILE에 JSON 파일의 전체 경로를 입력하세요.
응용: 구글 시트 데이터를 읽어 엑셀로 백업하고 싶다면
구글 시트 데이터를 로컬 엑셀 파일로 자동 백업하는 코드입니다. 코드 ④ 읽기 아래에 추가하세요.
from pathlib import Path
BACKUP_PATH = r"C:\Users\내이름\Desktop\시트백업.xlsx" # ← 백업 파일 경로
df.to_excel(BACKUP_PATH, index=False)
print(f" ✔ 엑셀 백업 완료 → {BACKUP_PATH}")
💡 이전 게시글과 결합하면: 웹 데이터 자동 수집 편으로 수집한 데이터를 구글 시트에 자동으로 입력하거나, 주식·환율 자동 수집 편의 데이터를 팀 공유 시트에 매일 자동 업데이트하는 것도 가능합니다.
핵심 요약
- 준비물: 구글 클라우드 API 설정(최초 1회) + pip install gspread google-auth pandas
- 설정: credentials.json을 코드와 같은 폴더에 저장 + 시트를 서비스 계정 이메일로 공유
- 실행: 터미널에서 python gsheet_auto.py 입력
- 결과: 구글 시트 데이터 읽기·새 행 추가·셀 업데이트 자동 처리
이 코드를 응용하면 여러 시트를 순서대로 처리하거나, 조건에 따라 특정 행의 색상을 자동으로 변경하는 것도 가능합니다.
