Google Objects
Thin, pythonic OO wrapper around Google's "google-api-python-client" library.
Currently supports Python 3+
Installation
$ pip install google-objects
Usage
Requires a valid Google API Credentials object from Google's excellent oauth2lib library. For more information, visit here.
Google Drive v3
- Retrieve drive 'About' information:
from google_objects import DriveClient
gdrive = DriveClient(OAUTH2LIB_CREDS)
about = gdrive.get_about()
print(about.email)
print(about.name)
print(about.photo)
- List files in drive by type:
files_by_type = {
'slides': gdrive.list_files('presentation'),
'folders': gdrive.list_files('folder'),
'spreadsheets': gdrive.list_files('spreadsheets'),
}
for file in files_by_type['folders']:
print(file.id)
print(file.name)
for file in files_by_type['spreadsheets']:
print(file.parents)
file = gdrive.get_file('FILE_ID')
new_file = file.copy('NEW_FILE_NAME', ['PARENT_FOLDER_1', 'PARENT_FOLDER_2'])
permission = new_file.add_permission('myfriend@hotmail.com')
print(permission.role, permission.type, permission.email)
Google Slides v1
- Retrieve presentation and loop through elements:
from google_objects import SlidesClient
gslides = SlidesClient(OAUTHLIB_CREDS)
presentation = gslides.get_presentation('PRESENTATION_ID')
for slide in presentation:
print(slide.id)
for element in slide:
print(element.type)
shape = presentation.get_element_by_id('SHAPE_ID')
for segment in shape.text:
print(segment.text)
- Batch update every cell in table:
with presentation as pres:
table = pres.get_element_by_id('TABLE_ID')
for cell in table:
print(cell.location)
for segment in cell.text:
segment.text = 'UPDATED_VALUE'
Google Sheets v4
- Retrieve spreadsheet and loop through sheets:
from google_objects import SheetsClient
gsheets = SheetsClient(OAUTHLIB_CREDS)
spreadsheet = gsheets.get_spreadsheet('SPREADSHEET_ID')
for sheet in spreadsheet:
print(sheet.id, sheet.title)
- Get sheet by name and return its full block of values:
sheet = spreadsheet['Sheet 1']
values = sheet.values()
- Get named range value block:
named_ranges = spreadsheet.named_ranges('SHEET_NAME!A:C')
for rng in named_range:
values = named_range.get_block()
values = spreadsheet.get_range('SHEET_NAME!A:C')
for i, row in enumerate(values):
values[i] = [1, 2, 3]
print(row)
values.update()
values[2:5] = [[1,2,4], [4, 5, 6], [6, 7, 8]]
values.update()
to_append = [[1, 2, 3], [4, 5, 6]]
values.append(to_append)