1단계 : 구글콘솔에서 연동 키 생성
- Google Cloud Console에 접속
- 새 프로젝트를 만들거나 기존 프로젝트를 클릭
- 상단 검색창에 "Google Sheets API"를 검색하고 [사용] 클릭
- Google Drive API도 함께 "사용" 설정 (이것은 키생성은 별도로 하지 않음)
- 좌측 메뉴에서 [사용자 인증 정보] -> 상단의 [사용자 인증 정보 만들기]
- 사용자 인증정보 만들 때 액세스할 데이터 선택은?
- 화면에 [사용자 데이터]와 [애플리케이션 데이터] 두 가지 옵션 [애플리케이션 데이터]를 선택 ( 사람이 직접 로그인해서 타인의 개인 정보를 가져오는 것이 아니라, 내 프로그램(파이썬 봇)이 백그라운드에서 구글 시트 같은 자원을 제어)
- [서비스 계정]을 선택 하고 서비스 계정 생성
- 서비스계정이름과 ID 작성 기준?
- 어떤 용도인지 한눈에 알 수 있는 이름 한글, 영문, 띄어쓰기 모두 사용 가능
- 서비스 계정 ID : 이름을 입력하면 자동으로 채워짐
- 권한이나 주구성원은 건너뛰기해도 무방 ('구글 시트 문서' 하나만 읽고 쓰면 되기 때문에) 혼자서 개발하고 사용하는 개인 프로젝트라면 본인 계정 하나로 충분하므로, 이 칸 역시 아무도 추가하지 않고 비워둠
- 생성된 서비스 계정 들어가기
- Google Cloud Console(console.cloud.google.com) 상단 검색창 옆의 [탐색 메뉴](줄 세 개 ≡ 아이콘)를 클릭
- 메뉴 목록에서 [IAM 및 관리자] 항목 선택 - [서비스 계정]을 클릭
- 생성한 서비스 계정 목록이 보이고 클릭
- 연동 키 생성
- 상단 탭 중 [키(Keys)]로 이동하여 [키 추가] ->
- [새 키 생성] -> [JSON]을 선택해 컴퓨터에 다운로드
- 다운로드한 JSON 파일에서 client_email 주소 복사
2단계 : 파이썬에서 연동 필요한 라이브러리 설치

3단계 : 구글 쉬트 공유 설정해야함
- 구글 시트 상단의 [공유] 버튼을 누르면 나오는 팝업창에서 [사용자 및 그룹 추가]라고 적힌 입력창 JSON 파일 내부에 있는 client_email 주소값을 복사
- 권한 설정창(보통 '뷰어'가 기본값)을 클릭해서 [편집자]로 변경 설정
- 전송 버튼 클릭
4단계 : 파이썬에서 연동 코드 작성
iimport gspread
from google.oauth2.service_account import Credentials
import pandas as pd
# 1. 인증 설정
json_file = 'gg_sheets_service_key.json'
scopes = ['https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive']
# 2. 인증 및 연결
creds = Credentials.from_service_account_file(json_file, scopes=scopes)
client = gspread.authorize(creds)
# 3. 시트 열기 및 데이터 가져오기
spreadsheet = client.open('내 구글 시트 제목')
# '내 시트' 파일 안의 '매매일지'라는 이름의 탭을 가져옴
worksheet = spreadsheet.worksheet('매매일지')
###------- 방법 1 : 전체 읽어오기 ----------------###
rows = worksheet.get_all_values() ## (이건 헤더가 완벽해야 함)
# 첫 번째 줄(헤더)과 나머지 데이터 분리하기
header = rows[0] # 첫 번째 행 (열 이름들)
content = rows[1:] # 두 번째 행부터의 실제 데이터
print("헤더:", header)
print("상위 데이터:", content[:5])
###------- 방법 2 : 일부 읽어오기 ----------------###
# 1구역: A1부터 F7까지 (헤더 포함 여부에 따라 슬라이싱 조정)
data_zone1 = worksheet.get('A1:F7')
if data_zone1:
df_zone1 = pd.DataFrame(data_zone1[1:], columns=data_zone1[0])
else:
df_zone1 = pd.DataFrame()
print("--- [1구역: A1:F7] ---")
print(df_zone1.head())

728x90
'데이터 분석 환경' 카테고리의 다른 글
| 나스닥 투자하려면 BOJ, FOMC 일정 (2025년)은 알고있어야.. (2) | 2025.03.11 |
|---|---|
| 비트코인(BTC) 지금 투자해도 괜찮을까? (1) | 2025.03.10 |
| 키움 OPEN API 자동 로그인 기능 안될때 (0) | 2025.03.09 |
| 엑셀 데이터 DDE 연동 2 - 엑셀파일 자동저장 하는 방법 (2) | 2024.07.11 |
댓글