-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathspreadsheets.py
61 lines (45 loc) · 1.62 KB
/
spreadsheets.py
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import pygsheets
def is_empty(data):
valid_count = 0
for element in data:
if element and element != ['']:
valid_count += 1
return valid_count == 0
class GoogleSpreadSheets(object):
def __init__(self):
try:
self.gc = pygsheets.authorize(outh_file='client_secret.json')
except FileNotFoundError as e:
raise e
def create(self, filename='New File'):
# Create spreadsheet
spreadsheet = self.gc.create(filename)
return spreadsheet
def open(self, filename):
spreadsheet = None
try:
spreadsheet = self.gc.open(filename)
return spreadsheet
except pygsheets.SpreadsheetNotFound as e:
raise e
def read(self, worksheet):
return worksheet.get_all_values(returnas='matrix')
def delete(self, worksheet):
del_worksheet(worksheet)
def write(self, spreadsheet=None, filename=None, payload=None):
if not spreadsheet:
try:
spreadsheet = self.open(filename)
except pygsheets.SpreadsheetNotFound:
spreadsheet = self.create(filename)
wks = spreadsheet.sheet1
data = self.read(wks)
index = len(data)
if is_empty(data):
wks.update_cell('A1', 'Profile name')
wks.update_cell('B1', 'Number of followers')
index += 1
# Update a cell with value (just to let him know values is updated ;) )
wks.update_cell(f'A{index}', payload['Profile name'])
wks.update_cell(f'B{index}', payload['Number of followers'])
return wks