def set_link_to_cell(table_id: str, donor_list: str, donor_cell: str, recipient_list: str, recipient_cell: str): values = [[f'=\'{donor_list}\'!{donor_cell}']] body = {'values': values} service.spreadsheets().values().update( spreadsheetId=table_id, range=f'{recipient_list}!{recipient_cell}', valueInputOption="USER_ENTERED", body=body).execute()
def update_one_cell(table_id: str, list_name: str, cell_id: str, new_value: [int, str]): """Изменить данные в одной ячейке""" values = [[f'{new_value}']] body = {'values': values} service.spreadsheets().values().update(spreadsheetId=table_id, range=f'{list_name}!{cell_id}', valueInputOption="USER_ENTERED", body=body).execute()
def create_new_list_in_table(table_id: str, list_name: str): """Создать новый лист в таблице""" requests = [{'addSheet': {'properties': {'title': list_name}}}] body = {'requests': requests} try: service.spreadsheets().batchUpdate(spreadsheetId=table_id, body=body).execute() except: print('Такой лист уже существует')
def get_lists_names_in_table(table_id: str) -> list: """Получить названия листов в таблице""" sheet_metadata = service.spreadsheets().get( spreadsheetId=table_id).execute() sheets = sheet_metadata.get('sheets', '') all_lists = [x['properties']['title'] for x in sheets] return all_lists
def append_data_in_table(table_id: str, list_name: str, user_value: list, position: str = 'ROWS'): """Запись в конец таблицы (user_value - это список списков)""" list_range = get_table_range(table_id, list_name) service.spreadsheets().values().batchUpdate( spreadsheetId=table_id, body={ "valueInputOption": "USER_ENTERED", "data": [{ "range": f"{list_name}!A{list_range + 1}", "majorDimension": position, "values": user_value }] }).execute()
def update_data_in_table(table_id: str, list_name: str, range1: str, user_value: list, position: str = 'ROWS'): """Обновить данные в таблице (user_value - это список списков)""" service.spreadsheets().values().batchUpdate( spreadsheetId=table_id, body={ "valueInputOption": "USER_ENTERED", "data": [{ "range": f"{list_name}!{range1}", "majorDimension": position, "values": user_value }] }).execute()
def get_table_range(table_id: str, list_name: str, position: str = 'ROWS'): """Получить количество строк в листе таблицы""" values = service.spreadsheets().values().get( spreadsheetId=table_id, range=f'{list_name}!A1:Z20000', majorDimension=position).execute() table_data = values['values'] return len(table_data)
def get_table_data(table_id: str, range1: str, range2: str, list_name: str = 'Лист1', position: str = 'ROWS'): """Чтение из таблицы""" values = service.spreadsheets().values().get( spreadsheetId=table_id, range=f'{list_name}!{range1}:{range2}', majorDimension=position).execute() table_data = values['values'] return table_data