Coverage for portality / lib / gsheet.py: 53%
17 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-04 09:41 +0100
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-04 09:41 +0100
1"""
2General reusable tools for Google Sheets
3"""
4import re
6import gspread
7from gspread.utils import rowcol_to_a1
8from gspread_dataframe import set_with_dataframe
9from oauth2client.service_account import ServiceAccountCredentials
12def load_client(gdrive_key_path):
13 # use creds to create a client to interact with the Google Drive API
14 scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
15 creds = ServiceAccountCredentials.from_json_keyfile_name(gdrive_key_path, scope)
16 client = gspread.authorize(creds)
17 return client
20def update_sheet_by_df(worksheet, df):
21 worksheet.clear()
22 set_with_dataframe(worksheet, df)
25def range_idx_to_a1(start_row, start_col, end_row, end_col):
26 return f'{rowcol_to_a1(start_row, start_col)}:{rowcol_to_a1(end_row, end_col)}'
29def idx_to_column_letter(col_idx):
30 return re.sub(r'\d+', '', rowcol_to_a1(1, col_idx))