본문 바로가기

Data & MarTech

구글시트 API(Google Sheets API) in Python - 데이터 쓰기

반응형

구글시트 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

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)
실행결과

append 실행 결과

코드실행결과를 보면 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 실행결과

API 실행결과


Reference

Google Sheet API - Append

 

Method: spreadsheets.values.append  |  Google Sheets  |  Google for Developers

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

developers.google.com

 

반응형