이번 포스팅에서는 googlespreadsheet api를 활용한 데이터 insert, 데이터 제거에 대해 알아봅니다.
Api 세팅
def api_setting():
scope = ['https://www.googleapis.com/auth/spreadsheets'
,'https://www.googleapis.com/auth/drive']
json_file_name = 'asset_management_key.json'
credentials = ServiceAccountCredentials.from_json_keyfile_name(json_file_name, scope)
gc = gspread.authorize(credentials)
creds = None
creds = service_account.Credentials.from_service_account_file(
json_file_name, scopes=scope
)
service = build(
serviceName="sheets",
version="v4",
credentials=creds,
cache_discovery=False,
)
spreadsheets = service.spreadsheets()
return spreadsheets
데이터 Setting (Data Frame to List)
- 먼저 데이터를 리스트 형식으로 만들어줍니다.
- 보통 pandas dataframe으로 데이터를 만들어 두는데, 이를 리스트 형식으로 변환해야합니다.
- 또한 컬럼이름이 필요하면 컬럼이름도 리스트 가장 앞부분에 포함시켜주어야 합니다.
- 또한 데이터를 string처리해주지 않으면 type가 맞지 않아 에러가 날 확률이 높습니다. 어처피 수치형을 문자형으로 변환하더라도 구글스프레드 시트에서 알아서 수치형으로 바꿔 인식해줍니다.
# Null값을 채워줍니다.
df = df.fillna('')
#string처리해주지 않으면 type가 맞지 않아 에러가 날 확률이 높습니다.
df = df.astype(str)
# 컬럼 이름들과 데이터의 value들을 리스트 형식으로 만들어줍니다.
data_list = [df.columns.values.tolist()] + df.values.tolist()
data_list
Data Insert (데이터 삽입)
- 데이터를 리스트화 했으면 구글스프레드 시트에 insert해줍니다.
- values.update() 구문을 활용합니다.
- cell_range에는 시트 이름을 넣어줍니다. 아래 코드에서 볼 수 있듯이 컬럼 범위도 정해줄 수 있습니다. (EX. A:AZ)
- ValueInputOption에는 Raw와 USER_ENTERED 중 하나를 선택합니다
- 관련링크 : https://developers.google.com/sheets/api/reference/rest/v4/ValueInputOption?hl=ko
- Raw : 사용자가 입력한 그대로 데이터를 넣어줍니다.
- USER_ENTERED : 값은 사용자가 UI에 입력한 것처럼 파싱됩니다. 숫자는 숫자로 유지되지만 문자열은 Google Sheets UI를 통해 셀에 텍스트를 입력할 때 적용되는 규칙을 따라 숫자, 날짜 등으로 변환될 수 있습니다.
- Body에 MajorDimemsion에는 "ROWS"를 세팅합니다
- ROWS가 보통 일반적으로 생각하는 방식이기 때문입니다.
- range=A1:B2,majorDimension=ROWS을 요청하면 [[1,2],[3,4]]를 반환
- range=A1:B2,majorDimension=COLUMNS를 요청하면 [[1,3],[2,4]]를 반환
def insert_data(data_list, spreadsheets,gsheet_id , sheet_name):
body = {
"values": data_list,
"majorDimension": "ROWS",
}
cell_range = sheet_name+"!A:AZ"
spreadsheets.values().update(
spreadsheetId=gsheet_id,
range=cell_range,
valueInputOption="USER_ENTERED",
body=body,
).execute()
Data Clear(삭제)
- clear function을 활용합니다.
- 관련링크 : https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/clear?hl=ko
def clear_data(spreadsheets, gsheet_id, sheet_name):
spreadsheets.values().clear(
spreadsheetId=gsheet_id,
range=sheet_name,
).execute()
728x90
반응형
'Data Engineering > Python' 카테고리의 다른 글
[Python/GoogleSpreadSheet API] GoogleSpreadSheet 필터 삽입, 필터 삭제 (0) | 2023.09.16 |
---|---|
[Python/GoogleSpreadSheet API] GoogleSpreadSheet 시트이름 및 시트탭 변경 (0) | 2023.09.16 |
[Python/GoogleSpreadSheet API] GoogleSpreadSheet API 연동하기 (2) (0) | 2023.09.12 |
[Python/GoogleSpreadSheet API] GoogleSpreadSheet API 연동하기 (1) (0) | 2023.09.10 |
[Python] DataFrame의 groupby에 매소드 적용 (agg 활용) (0) | 2022.07.02 |