Search

Python 18. 파이썬으로 구글 스프레드시트 다루기 - pygsheets 패키지

Created at
2020/04/18
Updated at
2021/01/05
Tags
Keywords
pysheets
구글스프레드시트
3 more properties
pygsheets, 구글스프레드시트
Table of Contents
아마도 상당히 많은 사람들이 업무 혹은 개인 용도로 구글스프레드시트를 사용하고 있을 것이다.
구글스프레드시트는 쉽게 말해 구글 아이디만 있다면 무료로 온라인 상에서 MS Office의 Excel의 기능을 상당 부분 사용할 수 있는 매우 편리한 애플리케이션으로, 특히 자동화와 협업에 강점을 가지고 있는 툴이라고 할 수 있다.
훌륭한 편의성을 갖추고 있기 때문에 구글스프레드시트를 작은 규모의 DB로 사용하기에도 무리가 없고, pygsheets 같은 패키지를 이용하면 파이썬으로 구글스프레드시트를 컨트롤 할 수 있어 꽤나 유용하다.
그렇다면 pygsheets를 사용해서 파이썬으로 구글스프레드시트의 데이터를 다루는 방법에 대해 알아보자.
여기서 커버되지 않은 더 자세한 내용은 언제나 그렇듯 공식문서 참조가 필요하다. (공식문서: https://pygsheets.readthedocs.io/en/stable/)

1. Install Package 패키지 설치하기

운영체제에 따라 아래와 같이 패키지를 설치한다.
mac: $ pip install pygsheets oauth2client (구글 API 인증을 위한 oauth2client도 함께 설치)
windows: $ conda install -c marta-sd pygsheets
아래와 같은 에러가 발생하면 pip로 설치
에러 메세지: TypeError: parse() got an unexpected keyword argument 'transport_encoding'
pip 설치 명령어
$ conda install pip
$ pip install pygsheets

2. 구글 API 셋업 & 인증

파이썬으로 구글 드라이브와 구글스프레드시트에 접근하기 위해서는 아래와 같이 구글 API 셋업과 인증이 필요하다.

2.1 OAuth

2006년에 IETF(Internet Engineering Task Force) OAuth Working Group에서 개발되고 유지보수 되는 인증을 위한 표준 프로토콜
공식 문서: https://oauth.net/2/

2.2 API 인증(Authorizing) 방법

설정 방법

3. Handling Sheets

먼저 시트를 열고, 복사하고, 선택하고, 지우는 방법부터 다뤄보자. 다음과 같은 테스트용 구글스프레트시트 people(파일명)을 만들어 pygsheets 실습을 진행해보겠다.

3.1 Open file/sheet

구글 드라이브 내의 스프레드시트 파일명으로 오픈
파일 접근
open 함수 이용
파라미터: 구글 드라이브 내의 스프레드시트 파일명
시트 접근
시트 오브젝트에 대해 .sheet1 으로 첫번째 시트를 가져올수 있음
처음에 항상 sheet1을 가져오고 다른 시트는 selecting 기능으로 선택함

3.2 Create Sheet (시트 생성)

현재 시트가 하나 뿐인 people 파일에 새로운 시트 "new_sheet"를 추가할 수 있다.
add_worksheet 함수 이용
파라미터: 생성할 시트이름, 행과 열의 크기
new_sheet 시트가 생겼다!

3.3 Copy Sheet (시트 복사)

기존의 시트를 복사해 새로운 시트를 만들 수 있다.
add_worksheet 함수 이용
파라미터: src_worksheet=복사할 시트 객체
copied 시트가 생겼다!

3.4 Select Sheet (시트 선택)

하나의 파일에 여러 개의 시트가 존재할 때 시트의 리스트를 확인하고, 원하는 시트를 선택하는 방법을 알아보자.
전체 시트의 객체에서 원하는 시트 객체를 선택
제목과 순서에 대한 값으로 시트를 선택 가능

3.5 시트 제목

3.6 시트 삭제

4. Handling Data

이제는 좀 더 구체적으로, 시트에 들어있는 데이터를 실제로 다루는 방법을 알아보자. 파이썬으로 구글스프레드시트의 데이터를 읽어오고, 수정하고, 셀 서식도 지정할 수 있다.

4.1 데이터 가져오기

1) 전체 데이터 가져오기
2) 특정 범위/위치의 데이터 가져오기
3) 특정 셀 데이터 가져오기

4.2 문자열을 포함한 cell 찾기

4.3 Update & Insert

1) 특정 범위에 데이터 업데이트
행/열 크기를 재설정한 모습
2) 특정 셀 데이터 업데이트
3) insert & append

4.4 셀 서식 지정

셀에 메모를 추가하거나 셀 배경 색상, 폰트 크기 등의 텍스트 포맷 설정 등 셀 서식 지정도 가능하다.

5. Pandas DataFrame과의 호환

사실 구글스프레드시트에서 데이터를 불러와 실제로 분석 작업 등을 편하게 하기 위해서는 Pandas와의 호환이 가장 중요하다고 할 수 있다.
구글스프레드시트에서 DataFrame으로 가져올 수만 있다면 평소에 pandas로 하던 데이터 관련 작업을 그대로 사용하면 되니까.
그렇다면 구글스프레드시트를 DataFrame으로 가져오는 방법, 반대로 내가 가진 DataFrame을 구글스프레드시트로 보내는 방법을 알아볼까.

5.1 Sheet → DataFrame

get_as_df() 함수 이용

5.2 DataFrame → sheet

set_dataframe(DataFrame, cell_start) 함수 이용
1) csv 파일 → 구글스프레드시트
2) seaborn iris 데이터 → 구글 스프레드시트

6. Share

구글스프레드시트의 공유 권한을 추가하거나 삭제하는 것도 아래와 같이 가능하다.

6.1 공유 권한 추가

# role: 'owner','writer','commenter','reader' sh.share("hyeshinoh+h@gmail.com", role='reader')
Python
복사

6.2 공유 권한 삭제

sh.remove_permission("hyeshinoh+h@gmail.com")
Python
복사