-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgoogle_sheet.py
More file actions
33 lines (29 loc) · 1.2 KB
/
Copy pathgoogle_sheet.py
File metadata and controls
33 lines (29 loc) · 1.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from apiclient import discovery
def make_matrix(twod):
max_size = max([len(row) for row in twod])
for row in twod:
row += ['' for i in range(max_size - len(row))]
return twod
class GoogleSheet:
def __init__(self, developerKey):
self.service = discovery.build('sheets', 'v4', developerKey=developerKey)
self.spreadsheetRangeCache = {}
# return first sheet
def getSpreadsheet(self, spreadsheetId):
# get spread sheet
spreadsheet = self.service.spreadsheets().get(spreadsheetId=spreadsheetId).execute()
firstSheetRange = spreadsheet["sheets"][0]["properties"]["title"]+'!A1:ZZ'
result = make_matrix(self.service.spreadsheets().values().get(spreadsheetId=spreadsheetId, range=firstSheetRange).execute()
.get("values", []))
self.spreadsheetRangeCache[firstSheetRange] = result
self.spreadsheetId = spreadsheetId
return result
def getRange(self, range):
try: range.index("!")
except ValueError: range+="!A1:ZZ"
if range in self.spreadsheetRangeCache:
return self.spreadsheetRangeCache[range]
result = make_matrix(self.service.spreadsheets().values().get(spreadsheetId=self.spreadsheetId, range=range).execute()
.get("values", []))
self.spreadsheetRangeCache[range] = result
return result