구글시트 API (Google Sheets API)를 사용한 데이터 조회
들어가며
구글 시트 API를 활용하여 데이터베이스환경을 구성하여 간단한 샘플앱 저장 및 조회기능으로 활용하는 것이 가능합니다. 많은 데이터처리가 필요하지 않고 간단히 메타데이터 테이블을 구성한다음 조회기능을 구현할 경우 적합한 방식이라고 이해하면 될 것 같습니다. 그럼 간단히 API를 활성화하고 Python 라이브러리를 활용하여 데이터 처리하는 과정을 다뤄보도록 하겠습니다.
라이브러리 추가 - 구글시트 API(Google Sheet API)
'API 및 서비스 > 라이브러리' 선택 및 활성화
API 라이브러리에서 'Google Sheet'를 입력합니다. 리스트에 조회된 google sheets api를 선택합니다.
구글 시트 API를 선택하고 해당 API 사용을 눌러 프로젝트에서 사용가능하도록 활성화합니다.
IAM 및 관리자 > 대시보드 메뉴 선택 및 서비스계정 키 받기
우선 서비스계정을 생성한 다음 해당 계정(이메일 주소) 텍스트를 복사합니다.
구글드라이브(Google Drive)에서 구글 시트를 새로 생성하거나, 기존 구글시트를 선택합니다. 'Share'(오른쪽 상단버튼)을 눌러 복사한 서비스 계정 메일주소를 유저에 추가합니다. 데이터 조회 및 입력이 가능하도록 User 권한을 'Editor'로 선택합니다.
API 사용해보기(Try this API)
Python 또는 node.js 라이브러리를 테스트해보기 전에 정상적으로 유저가 연결되어 데이터 조회가 가능한 상태인지 확인합니다. GCP 라이브러리에서 제공하는 'API 사용해보기' 기능을 선택하여 기본적인 연동에 필요한 API 파라미터 등이 어떤 것이 필요한지 이해하는데 용이합니다.
앞서 클릭했던 라이브러리 페이지로 다시 이동하여, 'API 사용해보기'를 눌러 Google Sheets API 레퍼런스 페이지로 이동합니다.
Sheets API(v4) API 엔드포인트에 대한 상세 내용
get: 스프레드시트 API 조회
이미 생성한 구글시트 조회에 필요한 필수 파라미터를 확인하는 방법 및 이후 조회 과정을 확인해보겠습니다. 먼저 구글시트ID는 아래와 같이 구글시트 URL에서 확인이 가능합니다.
https://docs.google.com/spreadsheets/d/<spreadsheetId>/edit#gid=622107213
구글시트명은 아래 탭에 해당하는 값입니다. 기본시트명은 Sheet1, Sheet2로 생성되나 아래 예시 구글시트는 시트명을 DataSheet로 변경하였습니다. 따라서 API 테스트시에도 변경된 시트명을 사용하면 됩니다.
API 실행
TIP. 구글드라이브파일이 구글시트가 아닌 엑셀파일로 지정된 경우, 위 절차대로 유저추가, spreadsheetId, sheetName을 지정해도 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 등을 통해 업무자동화기능을 구현할 경우에도 좋은 방법입니다. 관련된 메서드를 다음 포스트에서도 몇가지 더 구현해 볼 예정입니다.
'Data & MarTech' 카테고리의 다른 글
구글시트 API(Google Sheets API) in Python 데이터 업데이트 (1) | 2023.11.16 |
---|---|
구글시트 API(Google Sheets API) in Python - 데이터 쓰기 (0) | 2023.11.10 |
[BigQuery] 파이썬 라이브러리를 활용한 빅쿼리 연동 - 2. 빅쿼리 클라이언트 선언 및 조회 기능 구현 (0) | 2023.06.06 |
[BigQuery] 파이썬 라이브러리를 활용한 빅쿼리 연동 - 1. 개발환경설정 (1) | 2023.06.02 |
[GTM] React에 Google Tag Manager 적용하기 (0) | 2023.06.01 |