[Python] Google Sheets 읽기

By | 2020-05-17

실험 환경

  • OS: Ubuntu Linux 18.04
  • Python Version: 3.7
    • gspread, oauth2client 설치 필요
    • $pip install gspread oauth2client

인증 과정

먼저 API를 사용하기 위해서 구글 개발자 콘솔에 접속해서 몇 가지 설정을 진행해야 한다. 아래 사이트에 접속한 다음에 그림에 따라서 인증 과정을 진행하면 된다.

  • Web: https://console.developers.google.com/
그림 1: 인증 Step 1~2
그림 2: 인증 Step 3~6

그림 2 Step 3의 Project Name은 원하는 이름을 선택하면 된다.

그림 3: 인증 Step 7~8

그림 3에 Step 8 과정이 2번 존재한다. 사이트마다 조금 차이가 있지만, Google Drive API와 Google Sheets API 2개 모두 Enable 해야 Google Sheets Access가 가능한 것 같다.

그림 4: 인증 Step 9~11

그림 4의 Step 10 과정의 Service Account Name 역시 원하는 이름을 선택하면 된다.

그림 5: 인증 Step 12~13

그림 5 Step 12에서 Role을 Editor로만 설정하면 되는 것 같다. 여기서 정확히 Role의 역활이 무엇인지 잘 모르겠다.

그림 6: 인증 Step 14~15

그림 6 Step 14에서 Create를 선택하면 JSON 파일을 다운로드 할 수 있다. 이 파일은 Python에서 사용해야 하므로 저장을 해야 한다. 파일 이름은 변경해도 상관없다.

그림 7: 인증 Step 16

JSON 파일을 다운로드해서 열어보면 그림 7과 같은 형태이다. 그중 client_email 주소를 기억해야 한다. 여기까지 완료하면 Python을 사용해서 Access 하고자 하는 Google Sheets에 접속한 다음 그림 8을 따라서 추가로 설정을 진행하면 된다.

그림 8: 인증 Step 17~20

그림 7 Step 16에서 저장한 이메일 주소를 그림 8 Step 19에 추가해야 한다. 여기서 해당 이메일 주소에 부여하는 권한에 따라서 Python이 해당 Sheets를 변경할 수 있다. 만약 Read 권한만 부여한 Python에서는 읽기만 가능하다.


Python 코드

아래 코드 1은 앞에서 설정한 Google Sheets에 접근하기 위한 코드이다. 코드는 아주 어려운 부분이 없다. 아래의 3가지 값만 제대로 설정하면 Google Sheets 데이터를 확인할 있다.

  • JSON_FILE_NAME: 그림 6/7에서 다운로드한 JSON 파일 이름을 작성하면 된다.
  • SHEET_URL: 그림 8의 Google Sheets URL 주소를 작성하면 된다.
  • SHEET_NAME: 그림 8의 Google Sheets는 보통 여러 개의 Sheet로 구성되어 있다. 예를 들어서 제일 처음 생성되는 Sheet는 Sheet 1이다. 이렇게 접근하고자 하는 Sheet 이름을 작성하면 된다.

코드 1: Google Sheets 접근 코드

import sys
import gspread
from oauth2client.service_account import ServiceAccountCredentials


scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
creds = ServiceAccountCredentials.from_json_keyfile_name('JSON_FILE_NAME', scope)
client = gspread.authorize(creds)

sheetUrl = "SHEET_URL"

doc = client.open_by_url(sheetUrl)
workSheet = doc.worksheet("SHEET_NAME")
listOfHashes = workSheet.get_all_records()
print(listOfHashes)

출처

  1. https://www.twilio.com/blog/2017/02/an-easy-way-to-read-and-write-to-a-google-spreadsheet-in-python.html
  2. http://hleecaster.com/python-google-drive-spreadsheet-api/
  3. https://console.developers.google.com/

Leave a Reply

Your email address will not be published. Required fields are marked *