Data Engineering/Python

[Python/GoogleSpreadSheet API] GoogleSpreadSheet 시트이름 및 시트탭 변경

YSY^ 2023. 9. 16. 18:16

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

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
반응형