# 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 @patch 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 @patch 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 @patch 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()