Skip to content

Commit 325638d

Browse files
committed
can now init. sheets from pandas DataFrames
1 parent c1f99d0 commit 325638d

File tree

5 files changed

+46
-31
lines changed

5 files changed

+46
-31
lines changed

README.md

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,18 @@ print about.photo
3333

3434
```python
3535
files_by_type = {
36-
'slides': gdrive.list_files('presentation'),
37-
'folders': gdrive.list_files('folder'),
38-
'spreadsheets': gdrive.list_files('spreadsheets'),
36+
'slides': gdrive.list_files('presentation'),
37+
'folders': gdrive.list_files('folder'),
38+
'spreadsheets': gdrive.list_files('spreadsheets'),
3939
}
4040

4141
for file in files_by_type['folders']:
42-
print file.id
43-
print file.name
42+
print file.id
43+
print file.name
4444

4545
for file in files_by_type['spreadsheets']:
46-
# prints list of parent folder IDs
47-
print file.parents
46+
# prints list of parent folder IDs
47+
print file.parents
4848

4949
# ...
5050
```
@@ -74,32 +74,32 @@ presentation = gslides.get_presentation('PRESENTATION_ID')
7474

7575
# print slides attributes
7676
for slide in presentation:
77-
print slide.id
77+
print slide.id
7878

79-
for element in slide: # equivalent to 'for element in presentation.elements()'
80-
print element.type
81-
# Shape, Table, etc
79+
for element in slide: # equivalent to 'for element in presentation.elements()'
80+
print element.type
81+
# Shape, Table, etc
8282
```
8383

8484
- [x] Check text in shape:
8585

8686
```python
8787
shape = presentation.get_element_by_id('SHAPE_ID')
8888
for segment in shape.text:
89-
print segment.text
89+
print segment.text
9090
```
9191

9292
- [x] Batch update every cell in table:
9393

9494
```python
9595
# use with to perform batch updates in block
9696
with presentation as pres:
97-
table = pres.get_element_by_id('TABLE_ID')
98-
for cell in table:
99-
print cell.location # tuple containing cell location
100-
for segment in cell.text:
101-
# update cell
102-
segment.text = 'UPDATED_VALUE'
97+
table = pres.get_element_by_id('TABLE_ID')
98+
for cell in table:
99+
print cell.location # tuple containing cell location
100+
for segment in cell.text:
101+
# update cell
102+
segment.text = 'UPDATED_VALUE'
103103
```
104104

105105
### Google Sheets v4
@@ -113,22 +113,22 @@ gsheets = SheetsClient(OAUTHLIB_CREDS)
113113
spreadsheet = gsheets.get_spreadsheet('SPREADSHEET_ID')
114114

115115
for sheet in spreadsheet:
116-
print sheet.id, sheet.title
116+
print sheet.id, sheet.title
117117
```
118118

119119
- [x] Get sheet by name and return its full block of values:
120120

121121
```python
122122
sheet = spreadsheet['Sheet 1']
123-
values = sheet.values()
123+
values = sheet.values()
124124
```
125125

126126
- [x] Get named range value block:
127127

128128
```python
129129
named_ranges = spreadsheet.named_ranges('SHEET_NAME!A:C')
130130
for rng in named_range:
131-
values = named_range.get_block()
131+
values = named_range.get_block()
132132
```
133133

134134
- [x] Update values block:
@@ -137,8 +137,8 @@ for rng in named_range:
137137
values = spreadsheet.get_range('SHEET_NAME!A:C')
138138
# loop through rows
139139
for i, row in enumerate(values):
140-
values[i] = [1, 2, 3]
141-
print row
140+
values[i] = [1, 2, 3]
141+
print row
142142
values.update()
143143

144144
# you can also use the slice syntax for updating..
@@ -150,5 +150,5 @@ values.update()
150150

151151
```python
152152
to_append = [[1, 2, 3], [4, 5, 6]]
153-
values.append(to_append)
153+
values.append(to_append)
154154
```

google_objects/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66

77
from apiclient import discovery
88

9-
from .utils import set_private_attrs
10-
from .utils import keys_to_snake, keys_to_camel
9+
from google_objects.utils import set_private_attrs
10+
from google_objects.utils import keys_to_snake, keys_to_camel
1111

1212

1313
# sets default logging handler to avoid "No handler found" warnings.

google_objects/sheets/core.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222

2323

2424
def _value_to_cell(val):
25-
val = val.encode('utf-8').strip()
2625
if val.isdigit():
2726
try:
2827
return {'userEnteredValue': {'numberValue': float(val)}}
@@ -89,6 +88,13 @@ def get_spreadsheet(self, id):
8988

9089
return Spreadsheet.from_existing(data, self)
9190

91+
def create_spreadsheet_from_dataframes(self, *frames, **options):
92+
if not frames:
93+
raise ValueError
94+
95+
formatted_frames = [frm.values.tolist() for frm in frames]
96+
return self.create_spreadsheet(self, formatted_frames, **options)
97+
9298
def create_spreadsheet(self, sheets=[], **kwargs):
9399
data = self._resource.spreadsheets().create(
94100
body={

google_objects/sheets/updates.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
def FORMAT_ROW(sheet_id, start, end, red=0, green=0, blue=0):
1+
def FORMAT_ROW(sheet_id, start, end, rgba):
22
return {
33
"repeatCell": {
44
"range": {
@@ -9,9 +9,10 @@ def FORMAT_ROW(sheet_id, start, end, red=0, green=0, blue=0):
99
"cell": {
1010
"userEnteredFormat": {
1111
"backgroundColor": {
12-
"red": red,
13-
"green": green,
14-
"blue": blue
12+
"red": rgba[0],
13+
"green": rgba[1],
14+
"blue": rgba[2],
15+
'alpha': rgba[3]
1516
}
1617
}
1718
},

google_objects/utils.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,11 @@ def keys_to_camel(dt):
9292
dt[new_key] = dt.pop(key)
9393

9494
return dt
95+
96+
if __name__ == '__main__':
97+
dt = {
98+
'pageElements': 'test',
99+
'otherPresentation': 3
100+
}
101+
102+
print(keys_to_snake(dt))

0 commit comments

Comments
 (0)