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
시트 이름 가져오기
- 이전 포스팅에서 했던 시트의 메타데이터를 가져오는 코드를 활용합니다.
- 시트의 Id{sheetId}를 미리 알고 있어야 시트 이름을 가져올 수 있습니다.
def get_sheet_name(spreadsheets, gsheet_id):
sheet_metadata = spreadsheets.get(spreadsheetId=gsheet_id).execute()
# Find the sheet name corresponding to the sheetId
sheets = sheet_metadata.get('sheets', [])
for sheet in sheets:
if sheet['properties']['sheetId'] == {sheetId}:
sheet_name = sheet['properties']['title']
return sheet_name
BatchUpdate
- 스프레드시트에 하나 이상의 업데이트를 적용합니다.
- https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/batchUpdate?hl=ko
- batchupdate를 하는 파이썬 코드는 다음과 같습니다.
- request에는 어떤 batch를 업데이트 할지 json형태로 넣어줍니다.
def batchUpdate(spreadsheets, gsheet_id, requests):
request_body = {
'requests': [
requests
]
}
print(request_body)
response = spreadsheets.batchUpdate(
spreadsheetId=gsheet_id,
body=request_body
).execute()
시트이름 변경
- 시트이름을 변경합니다. 시트의 속성을 변경하는 것이니 "updateSheetProperties"를 활용합니다.
- 또한 fields는 "title"을 입력합니다. 시트의 제목을 바꾸는 것이기 때문입니다.
def change_sheet_name(sheetId, new_sheet_name):
self.requests = {
'updateSheetProperties' : {
'properties': {
'sheetId' : sheetId,
'title': new_sheet_name,
},
'fields' : 'title'
}
}
return requests
new_sheet_name = "new_sheet"
sheetID = {sheetId}
batchUpdate(spreadsheets, gsheet_id, change_sheet_name(sheetId, new_sheet_name))
시트탭 색상 변경
- tabcolor 관련 링크 : https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/sheets?hl=ko#sheetproperties
- 시트탭 색성을 바꾸어줍니다. 색상지정은 "tabColor"로 합니다. 모든 색은 빨간색, 초록색, 파란색으로 구현할 수 있기에, 세가지 색상의 비중에 따라 색상이 지정됩니다.
- 색상은 각각 0~1의 사이의 값을 기입할 수 있습니다.
- 또한 fields는 "tabColor"을 입력합니다. 시트탭의 색상을 바꾸는 것이기 때문입니다.
def update_sheet_color(sheetId):
requests = {
'updateSheetProperties' : {
'properties': {
'sheetId' : sheetId,
"tabColor": {
"red": 1.0,
"green": 0.0,
"blue": 0.0
}
},
'fields' : 'tabColor'
}
}
return requests
batchUpdate(spreadsheets, gsheet_id, reset_sheet_color(sheetId))
시트탭 색상 초기화
- tabcolor 를 세팅하지 않으면 시트탭 색상이 초기화된다.
- 또한 fields는 "tabColor"을 입력합니다. 시트탭의 색상을 바꾸는 것이기 때문입니다.
def reset_sheet_color(sheetId):
requests = {
'updateSheetProperties' : {
'properties': {
'sheetId' : sheetId,
},
'fields' : 'tabColor'
}
}
return requests
batchUpdate(spreadsheets, gsheet_id, reset_sheet_color(sheetId))
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 |