본문 바로가기

Data & MarTech

구글시트 API(Google Sheets API)를 사용한 데이터 조회

반응형

구글시트 API (Google Sheets API)를 사용한 데이터 조회

들어가며

구글 시트 API를 활용하여 데이터베이스환경을 구성하여 간단한 샘플앱 저장 및 조회기능으로 활용하는 것이 가능합니다. 많은 데이터처리가 필요하지 않고 간단히 메타데이터 테이블을 구성한다음 조회기능을 구현할 경우 적합한 방식이라고 이해하면 될 것 같습니다. 그럼 간단히 API를 활성화하고 Python 라이브러리를 활용하여 데이터 처리하는 과정을 다뤄보도록 하겠습니다.

 

 

라이브러리 추가 - 구글시트 API(Google Sheet API) 

'API 및 서비스 > 라이브러리' 선택 및 활성화

 

API 라이브러리에서 'Google Sheet'를 입력합니다. 리스트에 조회된 google sheets api를 선택합니다.

API 라이브러리

구글 시트 API를 선택하고 해당 API 사용을 눌러 프로젝트에서 사용가능하도록 활성화합니다.

구글 시트 API 검색결과
구글 시트 API 사용

 

IAM 및 관리자 > 대시보드 메뉴 선택 및 서비스계정 키 받기

우선 서비스계정을 생성한 다음 해당 계정(이메일 주소) 텍스트를 복사합니다.

서비스계정 생성

구글드라이브(Google Drive)에서 구글 시트를 새로 생성하거나, 기존 구글시트를 선택합니다. 'Share'(오른쪽 상단버튼)을 눌러 복사한 서비스 계정 메일주소를 유저에 추가합니다. 데이터 조회 및 입력이 가능하도록 User 권한을 'Editor'로 선택합니다.

Share 클릭
서비스계정 사용자 추가

 

API 사용해보기(Try this API)

Python 또는 node.js 라이브러리를 테스트해보기 전에 정상적으로 유저가 연결되어 데이터 조회가 가능한 상태인지 확인합니다. GCP 라이브러리에서 제공하는 'API 사용해보기' 기능을 선택하여 기본적인 연동에 필요한 API 파라미터 등이 어떤 것이 필요한지 이해하는데 용이합니다. 

앞서 클릭했던 라이브러리 페이지로 다시 이동하여, 'API 사용해보기'를 눌러 Google Sheets API 레퍼런스 페이지로 이동합니다.

API 사용해 보기

 

Sheets API(v4) API 엔드포인트에 대한 상세 내용

 

Google Sheets API  |  Google for Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 의견 보내기 Google Sheets API 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Google Sheets를

developers.google.com

 

get: 스프레드시트 API 조회

이미 생성한 구글시트 조회에 필요한 필수 파라미터를 확인하는 방법 및 이후 조회 과정을 확인해보겠습니다. 먼저 구글시트ID는 아래와 같이 구글시트 URL에서 확인이 가능합니다.

https://docs.google.com/spreadsheets/d/<spreadsheetId>/edit#gid=622107213

spreadsheetId 확인

구글시트명은 아래 탭에 해당하는 값입니다. 기본시트명은 Sheet1, Sheet2로 생성되나 아래 예시 구글시트는 시트명을 DataSheet로 변경하였습니다. 따라서 API 테스트시에도 변경된 시트명을 사용하면 됩니다.

시트 이름 확인

API 실행

API 실행

TIP. 구글드라이브파일이 구글시트가 아닌 엑셀파일로 지정된 경우, 위 절차대로 유저추가, spreadsheetId, sheetName을 지정해도 HTTP 400에러가 리턴된다. 이 경우 엑셀파일을 구글시트로 변경해야 정상적으로 데이터 연동이 가능하다.

엑셀형식 파일을 읽은 경우 HTTP 400에러 리턴

 

코드 구현

Python client library 설치
pip install --upgrade google-api-python-client
googlesheet_utils.py
from pprint import pprint
from googleapiclient import discovery
from google.oauth2 import service_account

class GooglesheetUtils:
    spreadsheet_id = 'your_spreadsheet_id'
    def __init__(self) -> None:
        self.credentials = service_account.Credentials.from_service_account_file(
            '/path/to/your_service_account.json',
            scopes = ['https://www.googleapis.com/auth/spreadsheets.readonly']
        )
        self.service = discovery.build('sheets','v4', credentials=self.credentials)

    def read_spreadsheet(self, range_name) -> None:
        service = discovery.build('sheets','v4', credentials=self.credentials)
        result = service.spreadsheets().values().get(spreadsheetId=self.spreadsheet_id, range=range_name).execute()
    
        # Get the values from the response
        values = result.get('values', [])

        # Print the values
        for row in values:
            print(row)
test_main.py
from googlesheet_utils import GooglesheetUtils

def main():
    googlesheetUtils = GooglesheetUtils()
    googlesheetUtils.read_spreadsheet('DataSheet!A1:B2')

if __name__ == "__main__":
    # execute only if run as a script
    main()

 

마치며

구글시트 API를 사용한 기능 중 Get 메서드를 활용한 조회기능만 테스트하였습니다. GoogleSheet는 일반유저들도 많이 사용하는 솔루션이므로 다양한 방법을 활용하여 업무자동화 및 간단한 조회/입력 기능 구현에 용이합니다. Zapier나 AWS Lambda 등을 통해 업무자동화기능을 구현할 경우에도 좋은 방법입니다. 관련된 메서드를 다음 포스트에서도 몇가지 더 구현해 볼 예정입니다.

반응형