Package: gsheets
gsheetsis a small wrapper around theGoogle Sheets API(v4) to provide
more convenient access toGoogle Sheetsfrom Python scripts.Turn on the API, download an OAuth client ID as JSON file, and create aSheetsobject from it. Use its index access (__getitem__) to retrieve
SpreadSheet objects by their id, or use.get()with a sheet URL.
Iterate over theSheetsobject for all spreadsheets, or fetch spreadsheets
by title with the.find()and.findall()methods.SpreadSheet objects are collections of WorkSheets, which provide access to the
cell values via spreadsheet coordinates/slices (e.g.ws['A1']) and
zero-based cell position (e.g.ws.at(0, 1)).Save WorkSheets (or all from a SpreadSheet) as CSV files with the.to_csv()-method. Createpandas.DataFramesfrom worksheet with the.to_frame()-method.LinksGitHub:https://github.com/xflr6/gsheetsPyPI:https://pypi.org/project/gsheets/Documentation:https://gsheets.readthedocs.ioChangelog:https://gsheets.readthedocs.io/en/latest/changelog.htmlIssue Tracker:https://github.com/xflr6/gsheets/issuesDownload:https://pypi.org/project/gsheets/#filesInstallationThis package runs under Python 3.7+, usepipto install:$pipinstallgsheetsThis will also installgoogle-api-python-clientand its dependencies, notablyhttplib2andoauth2client, as required dependencies.QuickstartLog into theGoogle Developers Consolewith the Google account whose
spreadsheets you want to access. Create (or select) a project and enable theDrive APIandSheets API(underGoogle Apps APIs).Go to theCredentialsfor your project and createNew credentials>OAuth client ID> of typeOther. In the list of yourOAuth 2.0 client
IDsclickDownload JSONfor the Client ID you just created. Save the
file asclient_secrets.jsonin your home directory (user directory).
Another file, namedstorage.jsonin this example, will be created after
successful authorization to cache OAuth data.On you first usage ofgsheetswith this file (holding the client secrets),
your webbrowser will be opened, asking you to log in with your Google account
to authorize this client read access to all its Google Drive files and Google
Sheets.Create a sheets object:>>>fromgsheetsimportSheets>>>sheets=Sheets.from_files('~/client_secrets.json','~/storage.json')>>>sheets#doctest: +ELLIPSIS<gsheets.api.Sheetsobjectat0x...>Fetch a spreadsheet by id or url:# id only>>>sheets['1dR13B3Wi_KJGUJQ0BZa2frLAVxhZnbz0hpwCcWSvb20']<SpreadSheet1dR13...20'Spam'># id or url>>>url='https://docs.google.com/spreadsheets/d/1dR13B3Wi_KJGUJQ0BZa2frLAVxhZnbz0hpwCcWSvb20'>>>s=sheets.get(url)>>>s<SpreadSheet1dR13...20'Spam'>Access worksheets and their values:# first worksheet with title>>>s.find('Tabellenblatt2')<WorkSheet1747240182'Tabellenblatt2'(10x2)># worksheet by position, cell value by index>>>s.sheets[0]['A1']'spam'# worksheet by id, cell value by position>>>s[1747240182].at(row=1,col=1)1Dump a worksheet to a CSV file:>>>s.sheets[1].to_csv('Spam.csv',encoding='utf-8',dialect='excel')Dump all worksheet to a CSV file (deriving filenames from spreadsheet and
worksheet title):>>>csv_name=lambdainfos:'%(title)s-%(sheet)s.csv'%infos>>>s.to_csv(make_filename=csv_name)Load the worksheet data into a pandas DataFrame (requirespandas):>>>s.find('Tabellenblatt2').to_frame(index_col='spam')eggsspamspameggs...WorkSheet.to_frame()passes its kwargs on topandas.read_csv()See alsogsheets.py– self-containd script to dump all worksheets of a Google
Spreadsheet to CSV or convert any subsheet to a pandas DataFrame (Python 2
prototype for this library)gspread– Google Spreadsheets Python API (more mature and featureful
Python wrapper, currently using the XML-basedlegacy v3 API)example Jupyter notebookusinggspreadto fetch a sheet into a pandas
DataFramedf2gspread– Transfer data between Google Spreadsheets and Pandas (build
upongspread, currently Python 2 only, GPL)pygsheets– Google Spreadsheets Python API v4 (v4 port ofgspreadproviding further extensions)gspread-pandas– Interact with Google Spreadsheet through Pandas DataFramespgsheets– Manipulate Google Sheets Using Pandas DataFrames (independent
bidirectional transfer library, using thelegacy v3 API, Python 3 only)PyDrive– Google Drive API made easy (google-api-python-clientwrapper
for theGoogle DriveAPI, currently v2)LicenseThis package is distributed under theMIT license.