Skip to main content

A package to easily open an instance of a Google spreadsheet and interact with worksheets through Pandas DataFrames.

Project description

PyPI version

author: Diego Fernandez

Links:

Overview

A package to easily open an instance of a Google spreadsheet and interact with worksheets through Pandas DataFrames.

Some key goals/features:

  • Nicely handle headers and indexes.

  • Run on Jupyter, headless server, and/or scripts

  • Allow storing different user credentials

  • Automatically handle token refreshes

Installation / Usage

To install use pip:

$ pip install gspread-pandas

Or clone the repo:

$ git clone https://github.com/aiguofer/gspread-pandas.git
$ python setup.py install

Before using, you will need to download Google client credentials for your app.

Client Credentials

To allow a script to use Google Drive API we need to authenticate our self towards Google. To do so, we need to create a project, describing the tool and generate credentials. Please use your web browser and go to Google console and :

  • Choose Create Project in popup menu on the top.

  • A dialog box appears, so give your project a name and click on Create button.

  • On the left-side menu click on API Manager.

  • A table of available APIs is shown. Switch Drive API and click on Enable API button. Do the same for Sheets API. Other APIs might be switched off, for our purpose.

  • On the left-side menu click on Credentials.

  • In section OAuth consent screen select your email address and give your product a name. Then click on Save button.

  • In section Credentials click on Add credentials and switch OAuth 2.0 client ID.

  • A dialog box Create Cliend ID appears. Select Application type item as Other.

  • Click on Create button.

  • Click on Download JSON icon on the right side of created OAuth 2.0 client IDs and store the downloaded file on your file system. Please be aware, the file contains your private credentials, so take care of the file in the same way you care of your private SSH key; i.e. move downloaded JSON to ~/.config/gspread_pandas/google_secret.json (or you can configure the directory and file name by directly calling gspread_pandas.conf.get_config

Thanks to similar project df2gspread for this great description of how to get the client credentials.

User Credentials

Once you have your client credentials, you can have multiple user credentials stored in the same machine. This can be useful when you have a shared server (for example with a Jupyter notebook server) with multiple people that may want to use the library. The first parameter to Spread must be the key identifying a user’s credentials. The first time this is called for a specific key, you will have to authenticate through a text based OAuth prompt; this makes it possible to run on a headless server through ssh or through a Jupyter notebook. After this, the credentials for that user will be stored (by default in ~/.config/gspread_pandas/creds) and the tokens will berefreshed automatically any time the tool is used.

Users will only be able to interact with Spreadsheets that they have access to.

Contributing

$ git clone https://github.com/aiguofer/gspread-pandas.git && cd gspread-pandas
$ pip install -e ".[dev]"

TBD

Example

from __future__ import print_function
import pandas as pd
from gspread_pandas import Spread

file_name = "http://www.ats.ucla.edu/stat/data/binary.csv"
df = pd.read_csv(file_name)

# 'Example Spreadsheet' needs to already exist and your user must have access to it
spread = Spread('example_user', 'Example Spreadsheet')
# This will ask to authenticate if you haven't done so before for 'example_user'

# Display available worksheets
spread.sheets

# Save DataFrame to worksheet 'New Test Sheet', create it first if it doesn't exist
spread.df_to_sheet(df, index=False, sheet='New Test Sheet', start='A2', replace=True)
spread.update_cells((1,1), (1,2), ['Created by:', spread.email])
print(spread)
# <gspread_pandas.client.Spread - User: '<example_user>@gmail.com', Spread: 'Example Spreadsheet', Sheet: 'New Test Sheet'>

Troubleshooting

SSL Error

If you’re getting an SSL related error or can’t seem to be able to open existing spreadsheets that you have access to, you might be running into an issue caused by certifi. This has mainly been experienced on RHEL and CentOS running Python 2.7. You can read more about it in issue 223 and issue 354 but, in short, the solution is to either install a specific version of certifi that works for you, or remove it altogether.

pip install certifi==2015.4.28

or

pip uninstall certifi

EOFError in Rodeo

If you’re trying to use gspread_pandas from within Rodeo you might get an EOFError: EOF when reading a line error when trying to pass in the verification code. The workaround for this is to first verify your account in a regular shell. Since you’re just doing this to get your Oauth token, the spreadsheet doesn’t need to be valid. Just run this in shell:

python -c "from gspread_pandas import Spread; Spread('<user_key>','')"

Then follow the instructions to create and store the OAuth creds.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gspread-pandas-0.12.0.tar.gz (12.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

gspread_pandas-0.12.0-py3.6.egg (23.2 kB view details)

Uploaded Egg

gspread_pandas-0.12.0-py3.5.egg (20.1 kB view details)

Uploaded Egg

gspread_pandas-0.12.0-py2.py3-none-any.whl (15.5 kB view details)

Uploaded Python 2Python 3

gspread_pandas-0.12.0-py2.7.egg (19.7 kB view details)

Uploaded Egg

File details

Details for the file gspread-pandas-0.12.0.tar.gz.

File metadata

File hashes

Hashes for gspread-pandas-0.12.0.tar.gz
Algorithm Hash digest
SHA256 33fdc138dfcb142a7b30d1ff7f4e21dae50d6b9cec3ad6890bb92608903a70d2
MD5 d236a77c51d57b6bdd697a1962f8c3b1
BLAKE2b-256 d73a9bdc60a7a7175f02cc5743f6a5c1a883ed32779fc0cf6a9d5aa0c896e4db

See more details on using hashes here.

File details

Details for the file gspread_pandas-0.12.0-py3.6.egg.

File metadata

File hashes

Hashes for gspread_pandas-0.12.0-py3.6.egg
Algorithm Hash digest
SHA256 e2346a86f1e4cf9ff93192d650cff11a155574d091a0d59d69e06be3e9c032ee
MD5 b3b0d778e061453779b94f62f74a0844
BLAKE2b-256 701cd3c9152f62cfdcbbd147ef50ad29dceeff8acdb04254967f7121eae8e57a

See more details on using hashes here.

File details

Details for the file gspread_pandas-0.12.0-py3.5.egg.

File metadata

File hashes

Hashes for gspread_pandas-0.12.0-py3.5.egg
Algorithm Hash digest
SHA256 ea18422aaaba3a44875850dfb935346758c3b40a7ab0d63444bf9ac61ac934cd
MD5 7a3a49a15e809853900aed8f742b84b6
BLAKE2b-256 4855be2ce8bd624ea532a290ba00b9c37b4eb32b0f3d3539b17da3e12a51086c

See more details on using hashes here.

File details

Details for the file gspread_pandas-0.12.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for gspread_pandas-0.12.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 545737c6b02933f9c4b22dead3fca922fcf4d1e7cca015cf5180acef9494436b
MD5 641ceca6fdc4b3ee9f573fb3e7d9b192
BLAKE2b-256 3f08e278627a246351d9534c9256f9f96a08413254e2aa997c2ca378e94e3950

See more details on using hashes here.

File details

Details for the file gspread_pandas-0.12.0-py2.7.egg.

File metadata

File hashes

Hashes for gspread_pandas-0.12.0-py2.7.egg
Algorithm Hash digest
SHA256 9edec32d35137473d0de3dbf1acba513bf37763c5ad006eb90f126ce9233d3aa
MD5 963487761728b643149cdc0e7d3aa653
BLAKE2b-256 6dfee3eb29086af833b274522e042668088f34c15d664638e4c27dbda34dc3f9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page