파이썬 구글 스프레드시트 api 연동 및 사용 방법

python google spreadsheet 연동 방법

구글 스프레드시트란 ? 

쉽게 말하면 액셀을 휴대폰, 아이패드, 컴퓨터 등 언제 어디에서나 인터넷만 연결되어 있으면 

확인 및 수정할 수 있는 구글이 개발한 스프레드 시트입니다. 

실시간으로 저장되고 접근 가능성이 용이하여 사용할 수 있는 확장성이 넓습니다. 

 

구글 스프레드시트를 간단한 데이터베이스로도 사용할 수 있습니다. 

지금부터 설명드릴 python 과 구글 스프레드시트를 연동하는 방법을 통해

파이선 코드로 스프레드시트와 접근하여 활용하면 활용도가 무궁무진할 것으로 생각됩니다.

 

 

 

1. 아래 url 클릭 후 서비스 계정 만들기 클릭 

URL :  https://console.developers.google.com/iam-admin/serviceaccounts/

2. 작업 → 키만들기 클릭 -> json 선택 후 만들기 클릭

3. 생성된 json key파일을 열어서 client_email 복사 

 

4. 구글 spreadsheet 새로 만들기 : 구글 로그인 -> 드라이브 클릭 -> 새로 만들기 클릭 -> 구글 spreadsheet 클릭 

5. 새로 만든 구글 spreadsheet 에 3번에서 복사한 client_email 주소를 공유 

공유버튼 클릭
복사한 client_email 주소를 붙여넣은 후 전송 클릭

6. 구글 spreadsheet id 확인

spreadsheets/d/ 뒤에 있는 구글 스프레드시트 아이디를 복사

https://docs.google.com/spreadsheets/d/{google spreadsheet id}/edit#gid=0

 

7. python google-spread sheet 라이브러리 설치 
pip install --upgrade google-api-python-client oauth2client

 

8. 아래의 코드에서 SPREADSHEET_ID, credential 변경 후 코드실행

(1). SPREADSHEET_ID : 6번에서 복사해둔 구글 spreadsheet id 입력

(2). credentials = ServiceAccountCredentials.from_json_keyfile_name( 뒷부분에 2번에서 저장해둔 json key 파일의 위치를 입력 

 

# -*- coding: utf-8 -*-

from httplib2 import Http
from googleapiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
# Google API 요청 시 필요한 권한 유형
SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
# 구글 시트 ID
SPREADSHEET_ID = 'test'
def main():
    values = [
    ['이건', '첫 번째', '행입니다.'],
    ['첫 번째'],
    ['열입니다.'],
    ]
    body = {
        'values': values
    }

    # json 파일로 서비스 계정 credential 정의
    credentials = ServiceAccountCredentials.from_json_keyfile_name('/home/miminilab/service_key.json', SCOPES)
    http_auth = credentials.authorize(Http())
    service = build('sheets', 'v4', http=http_auth)

    # 업데이트 요청 및 실행
    request = service.spreadsheets().values().update(spreadsheetId=SPREADSHEET_ID,
                                                    range='시트1!A1:D3', # 2
                                                    valueInputOption='RAW',
                                                    body=body)
    request.execute()

if __name__ == '__main__':
    main()

 

 

댓글

Designed by JB FACTORY