Spaces:
Runtime error
Runtime error
| # AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/00_project.ipynb. | |
| # %% auto 0 | |
| __all__ = ['SERVICE_ACCOUNT_FILE', 'SCOPES', 'SPREADSHEET_ID', 'Project'] | |
| # %% ../nbs/00_project.ipynb 3 | |
| from fastcore.utils import * | |
| # %% ../nbs/00_project.ipynb 5 | |
| from googleapiclient.discovery import build | |
| from google.oauth2 import service_account | |
| # %% ../nbs/00_project.ipynb 6 | |
| class __Project(): | |
| "Project (time) data handler" | |
| def __init__(self, | |
| scopes: list, # google apis authentication scopes, | |
| fn: str, # service account file name | |
| sid: str): # spreadsheet id | |
| creds = service_account.Credentials.from_service_account_file(fn, scopes=scopes) | |
| service = build('sheets', 'v4', credentials=creds) | |
| self.sheet = service.spreadsheets() | |
| self.sid = sid | |
| def __str__(self): return f"{self.sid}" | |
| __repr__=__str__ | |
| # %% ../nbs/00_project.ipynb 7 | |
| SERVICE_ACCOUNT_FILE = '../keys.json' | |
| SCOPES = ['https://www.googleapis.com/auth/spreadsheets'] | |
| SPREADSHEET_ID = '1DNoNf4glcuMxKoVzHVrFo-MktmsVji1wf4IHeraWH84' | |
| class Project(__Project): | |
| def __init__(self, | |
| fn:str=SERVICE_ACCOUNT_FILE): # service account file name | |
| super(Project, self).__init__(SCOPES, fn, SPREADSHEET_ID) | |
| # %% ../nbs/00_project.ipynb 10 | |
| def get(self:Project, | |
| sname:str=""): # a worksheet name can be specified. If not the 1st sheet is choosen. | |
| range = f"{sname}!" if sname else "" | |
| range += "A1:Z1000" | |
| result = self.sheet.values().get(spreadsheetId=self.sid, | |
| range=range).execute() | |
| values = result.get('values', []) | |
| return values | |
| # %% ../nbs/00_project.ipynb 13 | |
| def put(self:Project, | |
| data:list, | |
| sname:str=""): # a worksheet name can be specified. If not the 1st sheet is choosen. | |
| range = f"{sname}!" if sname else "" | |
| range += "A1" | |
| request = self.sheet.values().update(spreadsheetId=self.sid, | |
| range=range, | |
| valueInputOption="USER_ENTERED", | |
| body={"values":data}) | |
| response = request.execute() | |
| # %% ../nbs/00_project.ipynb 16 | |
| def append(self:Project, | |
| data:list, | |
| sname:str="") -> None: # a worksheet name can be specified. If not the 1st sheet is choosen. | |
| range = f"{sname}!" if sname else "" | |
| range += "A:E" | |
| request = self.sheet.values().append(spreadsheetId=self.sid, | |
| range=range, | |
| valueInputOption="USER_ENTERED", | |
| body={"values":data}) | |
| response = request.execute() | |