Manage your spreadsheets with gspread in Python.
Features:
- Open a spreadsheet by its title or url.
- Extract range, entire row or column values.
- Independent of Google Data Python client library.
- Python 3 support.
importgspread# Login with your Google accountgc=gspread.login('thedude@abid.es', 'password')
# Open a worksheet from spreadsheet with one shotwks=gc.open("Where is the money Lebowski?").sheet1wks.update_acell('B2', "it's down there somewhere, let me take another look.")
# Fetch a cell rangecell_list=wks.range('A1:B7')importgspread# Login with your Google accountgc=gspread.authorize(OAuth2Credentials)
# Open a worksheet from spreadsheet with one shotwks=gc.open("Where is the money Lebowski?").sheet1OAuth2Credentials must be an object with a valid access_token attribute, such as one created with the oauth2client library from Google. See "Using OAuth2 for Authorization" for more information.
In case your Google Account protected with Two Factor Authorization, you have to create an application-specific password and use your email to login as usual.
Otherwise you will get an AuthenticationError: Unable to authenticate. 403 code when trying to login.
If you're not using Two Factor Authorization and you get gspread.exceptions.AuthenticationError: Unable to authenticate. 403 code while trying to logon with gspread, do this:
- In your webbrowser logon to gmail/google with the account you're using in gspread.
- Visit the URLs https://www.google.com/settings/security/lesssecureapps and https://accounts.google.com/DisplayUnlockCaptcha and follow the instructions on those pages.
# You can open a spreadsheet by its title as it appears in Google Docssh=gc.open("My poor gym results") # <-- Look ma, no keys!# If you want to be specific, use a key (which can be extracted from# the spreadsheet's url)sht1=gc.open_by_key('0BmgG6nO_6dprdS1MN3d3MkdPa142WFRrdnRRUWl1UFE')
# Or, if you feel really lazy to extract that key, paste the entire urlsht2=gc.open_by_url('https://docs.google.com/spreadsheet/ccc?key=0Bm...FE&hl')# Select worksheet by index. Worksheet indexes start from zeroworksheet=sh.get_worksheet(0)
# By titleworksheet=sh.worksheet("January")
# Most common case: Sheet1worksheet=sh.sheet1# Get a list of all worksheetsworksheet_list=sh.worksheets()worksheet=sh.add_worksheet(title="A worksheet", rows="100", cols="20")sh.del_worksheet(worksheet)# With labelval=worksheet.acell('B1').value# With coordsval=worksheet.cell(1, 2).value# Get all values from the first rowvalues_list=worksheet.row_values(1)
# Get all values from the first columnvalues_list=worksheet.col_values(1)list_of_lists=worksheet.get_all_values()# Find a cell with exact string valuecell=worksheet.find("Dough")
print("Found something at R%sC%s"% (cell.row, cell.col))
# Find a cell matching a regular expressionamount_re=re.compile(r'(Big|Enormous) dough')
cell=worksheet.find(amount_re)# Find all cells with string valuecell_list=worksheet.findall("Rug store")
# Find all cells with regexpcriteria_re=re.compile(r'(Small|Room-tiering) rug')
cell_list=worksheet.findall(criteria_re)Each cell has a value and coordinates properties.
value=cell.valuerow_number=cell.rowcolumn_number=cell.colworksheet.update_acell('B1', 'Bingo!')
# Orworksheet.update_cell(1, 2, 'Bingo!')
# Select a rangecell_list=worksheet.range('A1:C7')
forcellincell_list:
cell.value='O_o'# Update in batchworksheet.update_cells(cell_list)Python 2.6+ or Python 3+
git clone https://github.com/burnash/gspread.git
cd gspread
python setup.py installpip install gspreadIf you're on easy_install, it's:
easy_install gspreadGo to Google Drive and create an empty spreadsheet you will use for testing.
Create a configuration file from config dummy:
cp tests/tests.config.example tests/tests.config
Open
tests.configwith your favorite editor and fill up config parameters with your testing spreadsheet's info.Install Nose.
Run tests:
nosetests
Please report bugs and suggest features via GitHub Issues.

