
Research
2025 Report: Destructive Malware in Open Source Packages
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.
gsparse
Advanced tools
Library for extracting data from Google Sheets by URL. Supports working with multiple worksheets in a single spreadsheet.
pip install gsparse
from gsparse import GSParseClient
# Create client
client = GSParseClient()
# Load spreadsheet by URL (default format is XLSX)
url = "https://docs.google.com/spreadsheets/d/YOUR_SHEET_ID/edit"
spreadsheet = client.load_spreadsheet(url)
# Get first worksheet
worksheet = spreadsheet.get_first_worksheet()
# Work with cells
cell = worksheet.get_cell(1, 1) # A1
print(f"Cell A1 value: {cell.value}")
# Get range
range_obj = worksheet.get_range(1, 10, 1, 3) # A1:C10
cells = worksheet.get_cells_in_range(range_obj)
# Export to dictionary
data_dict = worksheet.get_data_as_dict()
for row in data_dict:
print(row)
# Load spreadsheet in XLSX format (default)
spreadsheet = client.load_spreadsheet(url, format_type="xlsx")
# Load spreadsheet in CSV format
spreadsheet = client.load_spreadsheet(url, format_type="csv")
# Load from CSV string
csv_data = """Name,Age,City
John,25,Moscow
Mary,30,St. Petersburg"""
worksheet = client.load_from_csv_string(csv_data, "My Data")
# Export to dictionary
data_dict = worksheet.get_data_as_dict()
for row in data_dict:
print(row)
# Search by value
found_cells = client.find_data(url, "Moscow")
# Search by regular expression
pattern_cells = client.find_by_pattern(url, r"^\d+$") # numbers only
Main class for working with the library.
load_spreadsheet(url, format_type="xlsx") - Loads entire spreadsheetload_worksheet(url, worksheet_name, format_type="xlsx") - Loads specific worksheetload_from_csv_string(csv_string, worksheet_name) - Loads from CSV stringfind_data(url, value) - Search cells by valuefind_by_pattern(url, pattern) - Search by regular expressionRepresents Google Sheets table with multiple worksheets.
title - Spreadsheet titleworksheets - List of worksheetsworksheet_count - Number of worksheetsworksheet_names - List of all worksheet namesget_worksheet(name) - Get worksheet by nameget_worksheet_by_index(index) - Get worksheet by indexget_first_worksheet() - Get first worksheetexport_to_dict(headers_row) - Export all worksheets to dictionaryRepresents worksheet in spreadsheet.
name - Worksheet namerow_count - Number of rowscolumn_count - Number of columnsget_cell(row, column) - Get cellget_range(start_row, end_row, start_column, end_column) - Get rangeget_cells_in_range(range_obj) - Get all cells in rangeget_data_as_dict(headers_row) - Export to dictionaryfind_cells_by_value(value) - Search cells by valueRepresents cell in spreadsheet.
row - Row numbercolumn - Column numbervalue - Cell valueaddress - Cell address (A1, B2, etc.)is_empty - Whether cell is emptysrc/gsparse/
├── __init__.py # Main module
├── client.py # Main client
├── core/ # Core entities
│ ├── cell.py # Cell
│ ├── range.py # Cell range
│ ├── worksheet.py # Worksheet
│ └── spreadsheet.py # Spreadsheet
├── downloaders/ # Downloaders
│ └── google_sheets_downloader.py
├── parsers/ # Parsers
│ ├── base_parser.py # Base parser
│ ├── csv_parser.py # CSV parser
│ └── xlsx_parser.py # XLSX parser
└── utils/ # Utilities
├── url_utils.py # URL handling
└── data_utils.py # Data processing
The library includes comprehensive examples and tests:
Tests: Located in tests/ directory
test_client.py - Tests for GSParseClienttest_core.py - Tests for core entities (Cell, Range, Worksheet, Spreadsheet)Example Usage: See the Quick Start section above for common use cases
# Install development dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Code check
ruff check src/
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
If you have any questions or issues, please open an issue on GitHub.
FAQs
Google Sheets Parser
We found that gsparse demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.

Security News
Socket CTO Ahmad Nassri shares practical AI coding techniques, tools, and team workflows, plus what still feels noisy and why shipping remains human-led.

Research
/Security News
A five-month operation turned 27 npm packages into durable hosting for browser-run lures that mimic document-sharing portals and Microsoft sign-in, targeting 25 organizations across manufacturing, industrial automation, plastics, and healthcare for credential theft.