doyu's picture
add project.append()
eda2f71
# 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()