Google Sheet | Python에서 Pandas로 간단하게 구글스프레드시트 값 읽어오기
Feb 15, 2023
Feb 15, 2023
Feb 15, 2023
시트 이름을 특정하여 값 읽어오기
Google sheet 설정
구글스프레드시트는 권한 설정으로 접근 제한이 가능한 것이 장점이다. 소유자가 다른 사람 또는 링크를 갖게 되는 사람에게 권한을 부여하여 Access할 수 있게 할 수도 있고 주었던 권한을 다시 회수하여 접근하지 못하도록 할 수도 있다.
링크가 있는 모든 사용자에게 권한을 부여한 다음 python 코드를 사용하여 시트의 값을 읽어야 작동하며 그렇지 않은 경우 python code가 오류를 일으키게 된다.
Python Code
import pandas as pd
sheet_id = "1ID3jt97EebrOKswG-TncehP2VNfNqTvmItJjodCBqQg"
sheet_name = "Sheet1"
url = f"https://docs.google.com/spreadsheets/d/{sheet_id}/gviz/tq?tqx=out:csv&sheet={sheet_name}"
df = pd.read_csv(url)
- pandas 모듈 import.
- sheet id 지정 - 구글스프레트시트의 url 중 /d/ 와 /edit 사이에 있는 문자열이 id에 해당한다.
- sheet 이름 지정 - 특정 시트의 값을 가져오기 위해 시트 이름 지정한다. 이 때 시트명이 한글로 되어 있으면 url을 인식하지 못하는 오류를 일으킬 수 있다.
- url 객체로 구글스프레드시트 주소와 시트 이름으로 url 설정.
- pandas 모듈의 read_csv() 함수로 구글스프레드시트의 값을 읽어온다.
Google sheet에 하나의 시트만 있는 경우
Google sheet 설정
구글스프레드시트에 시트가 하나만 있으므로 시트명을 특정하여 지정해 줄 필요가 없는 경우에는 시트 이름이 없는 url을 사용하면 된다. 여러 시트가 있는 경우 이 url을 쓰면 맨 처음에 생성된 시트의 값을 읽어온다.
이 경우도 역시 구글스프레드시트에서 링크가 있는 모든 사용자에게 권한을 부여한 다음 python 코드를 사용하여 시트의 값을 읽어야 한다.
Python Code
import pandas as pd
sheet_url = "https://docs.google.com/spreadsheets/d/1ID3jt97EebrOKswG-TncehP2VNfNqTvmItJjodCBqQg/edit#gid=0"
url = sheet_url.replace('/edit#gid=', '/export?format=csv&gid=')
df = pd.read_csv(url)
- 구글스프레드시트의 url 전체를 복사해서 붙여 넣어 sheet_url 객체를 설정한다.
- url에서 뒷 부분을 csv 포맷으로 읽히도록 변경하여 url 객체가 설정 되도록 한다.