A Python library for Google Sheets with high-level API, automatic type inference, and efficient caching.
Project description
SmartSpread
A Python library for Google Sheets that extends gspread with a high-level API, automatic type inference, and efficient caching.
Features
- Simple API: Intuitive interface for spreadsheet and tab operations
- Multiple Data Formats: Work with DataFrames, list of dicts, or list of lists
- Automatic Type Inference: Smart conversion of numeric, string, and None values
- Efficient Caching: Minimizes API calls to stay within rate limits
- Pandas Integration: Seamless DataFrame read/write operations
- Row Operations: Update or insert rows based on column patterns
Installation
pip install smartspread
Quick Start
Authentication
- Create a Google Cloud Project
- Enable the Google Sheets API
- Create a service account and download credentials JSON
- Share your spreadsheet with the service account email
Basic Usage
from smart_spread import SmartSpread
# Initialize with credentials
spread = SmartSpread(
sheet_identifier="your-spreadsheet-id-or-name",
key_file="path/to/credentials.json"
)
# Get or create a tab
tab = spread.tab("MyTab")
# Read data as DataFrame
df = tab.read_data()
# Modify data
tab.data["new_column"] = "value"
# Write back to Google Sheets
tab.write_data(overwrite_tab=True)
Update Rows by Pattern
# Update existing row or insert new one
tab.update_row_by_column_pattern(
column="ID",
value=123,
updates={"Status": "completed", "Updated": "2024-01-01"}
)
tab.write_data(overwrite_tab=True)
Filter Data
# Filter rows by pattern
filtered = tab.filter_rows_by_column("Name", "Alice")
print(filtered)
Work with Different Formats
# DataFrame format (default)
tab_df = spread.tab("Sheet1", data_format="DataFrame")
df = tab_df.data # pandas DataFrame
# List of dicts format
tab_dict = spread.tab("Sheet2", data_format="dict")
data = tab_dict.data # [{"col1": "val1", ...}, ...]
# List of lists format
tab_list = spread.tab("Sheet3", data_format="list")
data = tab_list.data # [["header1", "header2"], ["val1", "val2"], ...]
Refresh Data
# Reload data after external changes
tab.refresh()
# Refresh spreadsheet metadata
spread.refresh()
API Reference
SmartSpread
SmartSpread(sheet_identifier, key_file=None, service_account_data=None, user_email=None)spread.tab(tab_name, data_format="DataFrame", keep_number_formatting=False)- Get or create tabspread.tab_names- List all tab namesspread.tab_exists(tab_name)- Check if tab existsspread.url- Get spreadsheet URLspread.grant_access(email, role="owner")- Grant access to userspread.refresh()- Clear cache and reload metadata
SmartTab
tab.read_data()- Read data from Google Sheetstab.write_data(overwrite_tab=False, as_table=False)- Write data to Google Sheetstab.update_row_by_column_pattern(column, value, updates)- Update or insert rowtab.filter_rows_by_column(column, pattern)- Filter rows by patterntab.refresh()- Reload data from Google Sheetstab.data- Access the data (DataFrame, list of dicts, or list of lists)
Notes
- Google Sheets API has rate limits (60 requests/minute for free tier)
- SmartSpread uses caching to minimize API calls
- Empty cells are represented as
Nonein DataFrames - Integer columns use nullable
Int64dtype to preserveNonevalues
License
MIT License - see LICENSE file for details.
Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
smartspread-1.1.0.tar.gz
(11.9 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file smartspread-1.1.0.tar.gz.
File metadata
- Download URL: smartspread-1.1.0.tar.gz
- Upload date:
- Size: 11.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0700a362f619272ebae6c955a192c244d08ea7a38c4832d20ed75b33e01e89ec
|
|
| MD5 |
5ce32d29d5fc500369f7756f8ec99d51
|
|
| BLAKE2b-256 |
ba70e75f8982a38d4309bfde46cb848d3923f681f0c6b8e3e948b004f8ee5c9a
|
File details
Details for the file smartspread-1.1.0-py3-none-any.whl.
File metadata
- Download URL: smartspread-1.1.0-py3-none-any.whl
- Upload date:
- Size: 9.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c392f52edd24f2b7efc16e469fac6be3912d8e6b35f0564ec4215dd6901914d
|
|
| MD5 |
638e090d39f76c80dd460012bc1ac189
|
|
| BLAKE2b-256 |
cd07ac71821fe34816d14679271ce684ce220c52587235e77f3f38b9113bda0b
|