호기심 많은 분석가

[Python] Python에서 구글 스프레드시트 연동하기 본문

Coding/Machine Learning & Python

[Python] Python에서 구글 스프레드시트 연동하기

DA Hun 2024. 5. 21. 16:56

목차

    Python에서 구글 스프레드시트 연동하기

    구글 스프레드시트를 활용해 데이터 관리를 하거나 대시보드를 운영하는 경우 DB의 데이터를 python으로 전처리한 뒤 자동으로 업데이트하는 등 업무를 하다 보면 Python에서 구글 스프레드시트 연동해야 하는 니즈가 존재합니다.

     

    이번 포스팅에서는 어떻게 Python에서 구글 스프레드시트를 연동하는지 예시를 통해 알아보고자 합니다.


    필요 라이브러리 불러오기 및 설치

    # !pip install pydata_google_auth
    # !pip install gspread
    # !pip install gspread_dataframe
    
    import pydata_google_auth
    import gspread
    from gspread_dataframe import set_with_dataframe

    우리는 pydata_google_auth 라이브러리를 통해 사용자 자격 증명(User Credentials)을 생성하고 Google API를 활용하고자 합니다.


    사용자 자격 증명(User Credentials) 생성

    SCOPES = ['https://www.googleapis.com/auth/drive', 'https://www.googleapis.com/auth/spreadsheets']
    credentials = pydata_google_auth.get_user_credentials(SCOPES, auth_local_webserver=True)
    credentials.access_token = credentials.token
    gc = gspread.authorize(credentials)

    pydata_google_auth를 통해 credentials를 생성하고, 그 내부의 token을 통해 구글 스프레드시트(gspread)에 인증합니다. 

     

    처음 코드를 실행하게 되면 웹을 통한 권한 승인 절차를 진행하게 되는데, 승인 후엔 local에 credentials가 저장되기 때문에 그 이후에는 따로 승인 절차가 필요하지 않은 것을 확인할 수 있습니다.

    • Credentials 저장 경로
      • Mac : $HOME/.config/pydata/pydata_google_credentials.json
      • Windows : $APPDATA/.config/pydata/pydata_google_credentials.json

    구글 스프레드시트 데이터 불러오기

    # google spread sheet 연동
    # 데이터로 작업하고자하는 시트 링크 기입
    sh = gc.open_by_url('google-spreadsheet-link')
    # 데이터로 작업하고자하는 시트 탭 명 기입
    worksheet = sh.worksheet('data')
    # 탭 내부 데이터 활용하기 위해 DataFrame 형태로 변환
    df_sheet_raw = pd.DataFrame(worksheet.get_all_values(), columns=worksheet.get_all_values()[0]).iloc[1:,:]

    인증을 모두 완료했으므로, 우리가 활용하고자 하는 구글 스프레드시트 내 데이터를 불러와보겠습니다.

    구글 스프레드시트 내 샘플 데이터

    open_by_url 함수에 시트 링크를, worksheet 함수에 데이터 탭 명을 기입해 준 뒤 get_all_values() 함수를 이용해 데이터를 불러옵니다.

    get_all_values 함수를 활용해 데이터 호출
    get_all_values 함수를 활용해 데이터 호출

    첨부한 사진에서 확인할 수 있다시피 get_all_values() 함수를 이용해 데이터를 호출하면 리스트 형태로 return 되기 때문에, pd.DataFrame 함수를 이용해 pandas로 활용하기 편한 데이터프레임 형태로 변환해 줍니다.

     

    그러면 이제 전처리할 수 있는 환경이 모두 완성되었습니다.

    데이터프레임 형태로 변환
    데이터프레임 형태로 변환


    구글 스프레드시트에 데이터 적재하기

    # 데이터프레임을 구글 시트 내에 적재
    # 탭명, 데이터, 컬럼명 포함 여부, 행, 열
    set_with_dataframe(worksheet, df_sheet, include_column_header=False, row=2, col=2)

    구글 스프레드시트의 데이터를 불러와서 활용할 때도 있지만 반대로 전처리한 데이터를 구글 스프레드시트에 적재하고 싶을 때도 있는데요.

     

    그런 경우에는 set_with_dataframe이라는 함수를 활용해 원하는 탭, 원하는 위치에 데이터를 적재할 수 있습니다.


    이번 포스팅에서는 간략하게 python과 구글 스프레드시트를 연동하는 방법에 대해 알아봤고, 더 많은 기능은 gspread 공식 문서 참고하시면 좋을 것 같습니다. 🐳