반응형
구글시트 API(Google Sheets API) in Python - 데이터 쓰기
Google Sheet API 확인하기
REST Resource: v4.spreadsheets.values
- Append: Spreadsheet에 데이터를 추가할 때 사용합니다. 지정된 범위에 데이터가 있을 경우 다음 행 또는 열에서 데이터가 추가됩니다.
- Update: 정해진 Spreadsheet 범위를 설정하여 데이터 쓰기를 할 때 사용합니다. 기존 범위(range)에 데이터가 작성되어 있는 경우에 덮어쓰기가 실행됩니다.
- BatchUpdate: Spreadsheet 내 여러 범위(range)를 설정하여 데이터 쓰기를 할 때 사용합니다. 기존 범위(range)에 데이터가 작성되어 있는 경우에 덮어쓰기가 실행됩니다.
Append
데이터 쓰기에서 가장 기본이 되는 쓰기모드로, 기존에 작성된 영역 다음 라인에 데이터가 추가되는 방식입니다.
Python
- Python 프로젝트를 추가하고, GCP(Google Cloud Platform)에서 service account json 파일을 다운받아 프로젝트 Root에 추가합니다. GCP 및 virtualenv 등 기본적인 설정은 제 블로그 포스트 내용을 참고해 주세요.
- Googlesheet용 Utils 클래스에 Append 함수(append_data)를 추가합니다. (아래 코드 참고)
googlesheet_main.py
from googlesheet_utils import GooglesheetUtils
if __name__ == "__main__":
googlesheet = GooglesheetUtils()
googlesheet.append_data('ProductTable!A1')
ProductTable 시트를 지정하고 range 시작셀을 A1으로 지정합니다.
googlesheet_utils.py
from pprint import pprint
from googleapiclient import discovery
from google.oauth2 import service_account
class GooglesheetUtils:
spreadsheet_id = '<YOUR_GOOGLESHEET_ID>'
def __init__(self) -> None:
self.credentials = service_account.Credentials.from_service_account_file(
'service_account_for_bq_tutorial.json',
scopes = ['https://www.googleapis.com/auth/spreadsheets']
)
self.service = discovery.build('sheets','v4', credentials=self.credentials)
def append_data(self, range_name) -> None:
request = self.service.spreadsheets().values().append(
spreadsheetId=self.spreadsheet_id,
valueInputOption='USER_ENTERED',
includeValuesInResponse=True,
range=range_name,
body={
'majorDimension': 'ROWS',
'values': [
[
10001112,
"Nike Air 96",
99000
],
[
10002342,
"Nike AirJordan 34",
159000
],
[
10003452,
"Nike Airforce 1",
89000
],
[
10001115,
"Adidas Superstar",
97000
]
]
}
)
response = request.execute()
pprint(response)
실행결과
코드실행결과를 보면 tableRange는 ProductTable!A1:C5이고, updatedDate.range는 ProductTable!A6:C9이 리턴된 것을 확인할 수 있습니다. 즉, 기존 셀에 데이터가 있으면 그 다음라인 즉 A6부터 데이터 쓰기가 실행됩니다.
참고. API
HTTP request
POST https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{range}:append
경로 파라미터에 spreadsheetId와 range를 지정해야 합니다.
path parameters
- spreadsheetId
- range
query parameters
입력값 처리에 필요한 옵션을 선택할 수 있는데, 저는 주로 아래 두가지 값을 세팅합니다.
- includeValuesInResponse(optional): true로 설정하여 API 응답값 values가 포함되어 리턴되도록 설정하였습니다.
- valueInputOption(required): USER_ENTERED(유저가 입력한 값을 파싱하여 타입에 맞춰 값이 등록되도록 함)
API 실행결과
Reference
Google Sheet API - Append
반응형
'Data & MarTech' 카테고리의 다른 글
Pandas를 이용해 데이터를 Merge하는 방법과 로깅 활용하기 (0) | 2024.05.29 |
---|---|
구글시트 API(Google Sheets API) in Python 데이터 업데이트 (1) | 2023.11.16 |
구글시트 API(Google Sheets API)를 사용한 데이터 조회 (1) | 2023.06.12 |
[BigQuery] 파이썬 라이브러리를 활용한 빅쿼리 연동 - 2. 빅쿼리 클라이언트 선언 및 조회 기능 구현 (0) | 2023.06.06 |
[BigQuery] 파이썬 라이브러리를 활용한 빅쿼리 연동 - 1. 개발환경설정 (1) | 2023.06.02 |