NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #565 most downloaded on PyPI
Google Spreadsheets Python API
Last release 1 years ago
14 May 2025
Release timing varies
gaps range from 9 days to 5 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
15 years old
83 releases · first in 2011
Fix public API auth snippet by @Jayy001 in #1545
creds by @alifeee in #1525Full Changelog: v6.2.0...v6.2.1
One column per quarter.
Fix public API auth snippet by @Jayy001 in https://github.com/burnash/gspread/pull/1545
Clarify the first step: authentication by @hraftery in https://github.com/burnash/gspread/pull/1546
Fix typo in community.rst by @s2t2 in https://github.com/burnash/gspread/pull/1547
rearrange flow to remove reference to creds by @alifeee in https://github.com/burnash/gspread/pull/1525
switch safety for pip-audit by @alifeee in https://github.com/burnash/gspread/pull/1551
Include the duplicate column names in error message by @NickCrews in https://github.com/burnash/gspread/pull/1548
Add property expiry in gspread client by @lavigne958 in #1453
batch_merge function [Issue #1473] by @muddi900 in #1498Worksheet.get_notes [Issue #1482] by @muddi900 in #1487batch_merge by @alifeee in #1542Full Changelog: v6.1.4...v6.2.0
Add property expiry in gspread client by @lavigne958 in https://github.com/burnash/gspread/pull/1453
Bump typing-extensions from 4.11.0 to 4.12.0 by @dependabot in https://github.com/burnash/gspread/pull/1471
Fix code block formatting typo in README by @agrvz in https://github.com/burnash/gspread/pull/1474
ignore jinja CVE by @lavigne958 in https://github.com/burnash/gspread/pull/1481
Type part of test suite utils by @lavigne958 in https://github.com/burnash/gspread/pull/1483
Remove passing exception as args to super in APIError by @mike-flowers-airbnb in https://github.com/burnash/gspread/pull/1477
Bump mypy from 1.10.0 to 1.10.1 by @dependabot in https://github.com/burnash/gspread/pull/1488
Update advanced.rst by @yatender-rjliving in https://github.com/burnash/gspread/pull/1492
Bump bandit from 1.7.8 to 1.7.9 by @dependabot in https://github.com/burnash/gspread/pull/1485
Bump flake8 from 7.0.0 to 7.1.0 by @dependabot in https://github.com/burnash/gspread/pull/1486
Bump typing-extensions from 4.12.0 to 4.12.2 by @dependabot in https://github.com/burnash/gspread/pull/1480
Bump mypy from 1.10.1 to 1.11.1 by @dependabot in https://github.com/burnash/gspread/pull/1497
Bump black from 24.4.2 to 24.8.0 by @dependabot in https://github.com/burnash/gspread/pull/1499
Bump flake8 from 7.1.0 to 7.1.1 by @dependabot in https://github.com/burnash/gspread/pull/1501
Fix docstring about BackOffHTTPClient by @pataiji in https://github.com/burnash/gspread/pull/1502
Fix comment to reflect correct google-auth package version requirement by @ikmals in https://github.com/burnash/gspread/pull/1503
Doc/community addons orm package by @lavigne958 in https://github.com/burnash/gspread/pull/1506
fix: fix type annotation for default_blank by @hiro-o918 in https://github.com/burnash/gspread/pull/1505
Bump mypy from 1.11.1 to 1.11.2 by @dependabot in https://github.com/burnash/gspread/pull/1508
better handler API error parsing. by @lavigne958 in https://github.com/burnash/gspread/pull/1510
Add test on receiving an invalid JSON in the APIError exception handler. by @lavigne958 in https://github.com/burnash/gspread/pull/1512
[feature] Add 'expand_table' feature by @lavigne958 in https://github.com/burnash/gspread/pull/1475
Bump bandit from 1.7.9 to 1.7.10 by @dependabot in https://github.com/burnash/gspread/pull/1514
Created a batch_merge function [Issue #1473] by @muddi900 in https://github.com/burnash/gspread/pull/1498
Added a range option to Worksheet.get_notes [Issue #1482] by @muddi900 in https://github.com/burnash/gspread/pull/1487
Documentation update for gspread.worksheet.Worksheet.get_all_records by @levon003 in https://github.com/burnash/gspread/pull/1529
add example for batch_merge by @alifeee in https://github.com/burnash/gspread/pull/1542
explicitly list exported package symbols by @alinsavix in https://github.com/burnash/gspread/pull/1531
Full Changelog : v6.1.3...v6.1.4
Full Changelog: v6.1.3...v6.1.4
Bugfix to catch JSONDecodeError better from Google.
Bugfix to catch JSONDecodeError better from Google.
Full Changelog: v6.1.2...v6.1.3
ignore jinja CVE by @lavigne958 in https://github.com/burnash/gspread/pull/1481
Remove passing exception as args to super in APIError by @mike-flowers-airbnb in https://github.com/burnash/gspread/pull/1477
better handler API error parsing. by @lavigne958 in https://github.com/burnash/gspread/pull/1510
Add test on receiving an invalid JSON in the APIError exception handler. by @lavigne958 in https://github.com/burnash/gspread/pull/1512
add note about runnings tests to contrib guide by @alifeee in #1465
get_notes by @nbwzx in #1461Full Changelog: v6.1.1...v6.1.2
add note about runnings tests to contrib guide by @alifeee in https://github.com/burnash/gspread/pull/1465
Some updates on get_notes by @nbwzx in https://github.com/burnash/gspread/pull/1461
Ignore pip vulnerabilities in CI. by @lavigne958 in #1464
Worksheet.update argument ordering & single cell updating (i.e. now Worksheet.update_acell) by @alexmalins in #1449toWorkhsheet` [Issue #1420] by @muddi900 in #1444get_notes by @nbwzx in #1451Full Changelog: v6.1.0...v6.1.1
Add some missing typing in code by @lavigne958 in https://github.com/burnash/gspread/pull/1448
More fixes for Worksheet.update argument ordering & single cell updating (i.e. now Worksheet.update_acell) by @alexmalins in https://github.com/burnash/gspread/pull/1449
Added 'add_data_validation` to Workhsheet [Issue #1420] by @muddi900 in https://github.com/burnash/gspread/pull/1444
Bump typing-extensions from 4.10.0 to 4.11.0 by @dependabot in https://github.com/burnash/gspread/pull/1450
Bump black from 23.3.0 to 24.4.0 by @dependabot in https://github.com/burnash/gspread/pull/1452
Fix incorrect version number in HISTORY.rst from 6.0.1 to 6.1.0 by @yhay81 in https://github.com/burnash/gspread/pull/1455
add get_notes by @nbwzx in https://github.com/burnash/gspread/pull/1451
Bump mypy from 1.9.0 to 1.10.0 by @dependabot in https://github.com/burnash/gspread/pull/1459
Bump black from 24.4.0 to 24.4.2 by @dependabot in https://github.com/burnash/gspread/pull/1460
bugfix: handle domain name in spreadsheet copy permissions by @lavigne958 in https://github.com/burnash/gspread/pull/1458
Fix/api key auth version by @alifeee in https://github.com/burnash/gspread/pull/1463
Ignore pip vulnerabilities in CI. by @lavigne958 in https://github.com/burnash/gspread/pull/1464
Remove StrEnum dependency and added custom class[issue #1462] by @muddi900 in https://github.com/burnash/gspread/pull/1469
types can be obtained using mypy to type code using gspread
cast_to_a1_notation by @lavigne958 in #1427import_csv() by @lavigne958 in #1426Full Changelog: v6.0.2...v6.1.0
Add py.typed marker by @lavigne958 in https://github.com/burnash/gspread/pull/1422
Improve back-off client by @lavigne958 in https://github.com/burnash/gspread/pull/1415
Add new auth method API key by @lavigne958 in https://github.com/burnash/gspread/pull/1428
Bugfix/add set timeout by @lavigne958 in https://github.com/burnash/gspread/pull/1417
Fix wrapper cast_to_a1_notation by @lavigne958 in https://github.com/burnash/gspread/pull/1427
Bump bandit from 1.7.5 to 1.7.8 by @dependabot in https://github.com/burnash/gspread/pull/1433
Bump mypy from 1.6.1 to 1.9.0 by @dependabot in https://github.com/burnash/gspread/pull/1432
Bump typing-extensions from 4.8.0 to 4.10.0 by @dependabot in https://github.com/burnash/gspread/pull/1424
Bump flake8 from 5.0.4 to 7.0.0 by @dependabot in https://github.com/burnash/gspread/pull/1375
fix error message readability by @imrehg in https://github.com/burnash/gspread/pull/1435
Add missing method import_csv() by @lavigne958 in https://github.com/burnash/gspread/pull/1426
update readme examples by @alifeee in https://github.com/burnash/gspread/pull/1431
Add user friendly message when we can't override a test cassette by @lavigne958 in https://github.com/burnash/gspread/pull/1438
Allow "warning" type protected ranges by @alifeee in https://github.com/burnash/gspread/pull/1439
Improve README and documentation with value render options by @lavigne958 in https://github.com/burnash/gspread/pull/1446
Fixup gspread client init arguments by @lavigne958 in #1412
Full Changelog: v6.0.1...v6.0.2
Fixup gspread client init arguments by @lavigne958 in https://github.com/burnash/gspread/pull/1412
Allow client to use external Session object by @lavigne958 in https://github.com/burnash/gspread/pull/1384
isinstance by @alifeee in https://github.com/burnash/gspread/pull/1398None by @lavigne958 in https://github.com/burnash/gspread/pull/1404spreadsheet in Worksheet. by @lavigne958 in https://github.com/burnash/gspread/pull/1402Full Changelog: https://github.com/burnash/gspread/compare/v6.0.0...v6.0.1
Remove deprecated method delete_row by @cgkoutzigiannis in https://github.com/burnash/gspread/pull/1062
The main changes in version 6 are:
master into feature/release_6_0_0 by @alifeee in https://github.com/burnash/gspread/pull/1320Worksheet.sort() signature by @lavigne958 in https://github.com/burnash/gspread/pull/1342get_values and alias of get by @alifeee in https://github.com/burnash/gspread/pull/1296.first() function) by @alifeee in https://github.com/burnash/gspread/pull/1344to_records to build records by @lavigne958 in https://github.com/burnash/gspread/pull/1377Full Changelog: https://github.com/burnash/gspread/compare/v5.12.4...v6.0.0
Bump actions/setup-python from 4 to 5 by @dependabot in https://github.com/burnash/gspread/pull/1370
Full Changelog: https://github.com/burnash/gspread/compare/v5.12.3...v5.12.4
1363 get all records retrieves a large number of empty rows after the end of the data by @alifeee in https://github.com/burnash/gspread/pull/1364
Full Changelog: https://github.com/burnash/gspread/compare/v5.12.2...v5.12.3
Many fixes for get_records by @alifeee in https://github.com/burnash/gspread/pull/1357
get_records by @alifeee in https://github.com/burnash/gspread/pull/1357worksheet.update migration guide by @alifeee in https://github.com/burnash/gspread/pull/1362Full Changelog: https://github.com/burnash/gspread/compare/v5.12.1...v5.12.2
add deprecation warnings for lastUpdateTime... by @alifeee in https://github.com/burnash/gspread/pull/1333
use_index and references to it in get_records by @alifeee in https://github.com/burnash/gspread/pull/1343combine_merged_cells when using from a range that doesn't start at A1 by @alifeee in https://github.com/burnash/gspread/pull/1335Full Changelog: https://github.com/burnash/gspread/compare/v5.12.0...v5.12.1
allows users to silence deprecation warnings by @lavigne958 in https://github.com/burnash/gspread/pull/1324
worksheet.get_records to get specific row ranges by @AndrewBasem1 in https://github.com/burnash/gspread/pull/1301worksheet.update method by @ksj20 in https://github.com/burnash/gspread/pull/1312maintain_size to keep asked for size in get, get_values by @alifeee in https://github.com/burnash/gspread/pull/1305Full Changelog: https://github.com/burnash/gspread/compare/v5.11.3...v5.12.0
Fix list_spreadsheet_files return value by @mephinet in https://github.com/burnash/gspread/pull/1308
Full Changelog: https://github.com/burnash/gspread/compare/v5.11.2...v5.11.3
Fix merge_combined_cells in get_values (AND 5.11.2 RELEASE) by @alifeee in https://github.com/burnash/gspread/pull/1299
Full Changelog: https://github.com/burnash/gspread/compare/v5.11.1...v5.11.2
Bump actions/checkout from 3 to 4 by @dependabot in https://github.com/burnash/gspread/pull/1288
Full Changelog: https://github.com/burnash/gspread/compare/v5.11.0...v5.11.1
Add deprecation warnings for colors by @alifeee in https://github.com/burnash/gspread/pull/1278
If you are now getting an APIError when opening a spreadsheet, you might not have enabled the Google Drive API for your access token. Please see #1286.
fixed in v5.11.1
creationTime/lastUpdateTime by @alifeee in https://github.com/burnash/gspread/pull/1255column_count prop as well as col_count by @alifeee in https://github.com/burnash/gspread/pull/1274Full Changelog: https://github.com/burnash/gspread/compare/v5.10.0...v5.11.0
Add breaking change warning in Worksheet.update() by @lavigne958 in https://github.com/burnash/gspread/pull/1226
Full Changelog: https://github.com/burnash/gspread/compare/v5.9.0...v5.10.0
Bugfix/fix get last update time by @lavigne958 in https://github.com/burnash/gspread/pull/1186
Full Changelog: https://github.com/burnash/gspread/compare/v5.8.1...v5.9.0
Bump black from 22.10.0 to 22.12.0 by @dependabot in https://github.com/burnash/gspread/pull/1154
Bump black from 22.10.0 to 22.12.0 by @dependabot in https://github.com/burnash/gspread/pull/1154
Bump isort from 5.10.1 to 5.11.3 by @dependabot in https://github.com/burnash/gspread/pull/1155
Bump isort from 5.11.3 to 5.11.4 by @dependabot in https://github.com/burnash/gspread/pull/1157
#1104: added a delete by worksheet id method by @muddi900 in https://github.com/burnash/gspread/pull/1148
improve CI workflow - upgrade setuptools to fix CVE by @lavigne958 in https://github.com/burnash/gspread/pull/1179
Bump codespell from 2.2.2 to 2.2.4 by @dependabot in https://github.com/burnash/gspread/pull/1178
Bump bandit from 1.7.4 to 1.7.5 by @dependabot in https://github.com/burnash/gspread/pull/1177
Bump black from 22.12.0 to 23.1.0 by @dependabot in https://github.com/burnash/gspread/pull/1168
Update user-guide.rst to include a warning by @alsaenko in https://github.com/burnash/gspread/pull/1181
Fixed typo in docs/user-guide.rst by @raboba2re in https://github.com/burnash/gspread/pull/1182
Bump black from 23.1.0 to 23.3.0 by @dependabot in https://github.com/burnash/gspread/pull/1183
Handle cases when rgbColor is not set by @lavigne958 in https://github.com/burnash/gspread/pull/1184
Fix: hidden property might not be set from the API by @lavigne958 in https://github.com/burnash/gspread/pull/1151
hidden property might not be set from the API by @lavigne958 in https://github.com/burnash/gspread/pull/1151Full Changelog: https://github.com/burnash/gspread/compare/v5.7.1...v5.7.2
Fix dependencies required version by @lavigne958 in https://github.com/burnash/gspread/pull/1147
Full Changelog: https://github.com/burnash/gspread/compare/v5.7.0...v5.7.1
Fix dependencies required version by @lavigne958 in https://github.com/burnash/gspread/pull/1147
chore: Update outdated LICENSE year by @bluzir in https://github.com/burnash/gspread/pull/1124
DateTimeRenderOption by @lavigne958 in https://github.com/burnash/gspread/pull/1136Full Changelog: https://github.com/burnash/gspread/compare/v5.6.2...v5.7.0
update parent folder for client.copy method by @lavigne958 in https://github.com/burnash/gspread/pull/1123
client.copy method by @lavigne958 in https://github.com/burnash/gspread/pull/1123Full Changelog: https://github.com/burnash/gspread/compare/v5.6.0...v5.6.2
Fix clear_note method when using numeric boundaries by @lavigne958 in https://github.com/burnash/gspread/pull/1106
clear_note method when using numeric boundaries by @lavigne958 in https://github.com/burnash/gspread/pull/1106Spreadsheet.share() by @lavigne958 in https://github.com/burnash/gspread/pull/1111Full Changelog: https://github.com/burnash/gspread/compare/v5.5.0...v5.6.0
Use pathlib by @lavigne958 in https://github.com/burnash/gspread/pull/1057
Cell by @chisvi in https://github.com/burnash/gspread/pull/1063set_timeout by @lavigne958 in https://github.com/burnash/gspread/pull/1070client_factory parameter to auth methods by @jlumbroso in https://github.com/burnash/gspread/pull/1075list_protected_ranges by @lavigne958 in https://github.com/burnash/gspread/pull/1076numericise_all by @lavigne958 in https://github.com/burnash/gspread/pull/1082oauth_from_dict by @lavigne958 in https://github.com/burnash/gspread/pull/1088Worksheet.batch_format method by @lavigne958 in https://github.com/burnash/gspread/pull/1101Full Changelog: https://github.com/burnash/gspread/compare/v5.4.0...v5.5.0
Add warning about deprecated oauth flow by @lavigne958 in https://github.com/burnash/gspread/pull/1047
get_all_records by @lavigne958 in https://github.com/burnash/gspread/pull/1028auto_resize_columns by @lavigne958 in https://github.com/burnash/gspread/pull/1039batch_format method. by @lavigne958 in https://github.com/burnash/gspread/pull/1049Full Changelog: https://github.com/burnash/gspread/compare/v5.3.2...v5.4.0
Bugfix/black python3.10 by @lavigne958 in https://github.com/burnash/gspread/pull/1020
Full Changelog: https://github.com/burnash/gspread/compare/v5.3.0...v5.3.2
Feature/rework test cassettes recording by @lavigne958 in https://github.com/burnash/gspread/pull/1004
Full Changelog: https://github.com/burnash/gspread/compare/v5.2.0...v5.3.0
Copy comments when during spreadsheet copy by @lavigne958 in https://github.com/burnash/gspread/pull/979
Full Changelog: https://github.com/burnash/gspread/compare/v5.1.1...v5.2.0
Fix documentation about oauth (#975 by @lavigne958)
5.1.1 (2021-12-22)
Codespell skip docs build folder (#962 by @lavigne958)
Codespell skip docs build folder (#962 by @lavigne958)
Update contributing guidelines (#964 by @lavigne958)
Add oauth from dict (#967 by @lavigne958)
Update README.md to include badges (#970 by @lavigne958)
Add new method to get all values as a list of Cells (#968 by @lavigne958)
automatic conversion of a cell letter to uppercase (#972 by @Burovytskyi)
Add deprecation warning for delete_row method in documentation (#909 by @javad94)
Fix a typo in HISTORY.rst (#904 by @TurnrDev)
Fix typo and fix return value written in docstrings (#903 by @rariyama)
Add deprecation warning for delete_row method in documentation (#909 by @javad94)
split files models.py and test.py (#912 by @lavigne958)
parent 39d1ecb59ca3149a8f46094c720efab883a0dc11 author Christian Clauss cclauss@me.com 1621149013 +0200 commit ter Christian Clauss cclauss@me.com 1630103641 +0200 (#869 by @cclaus)
Enable code linter in CI (#915 by @lavigne958)
isort your imports (again), so you don't have to (#914 by @cclaus)
lint_python.yml: Try 'tox -e py' to test current Python (#916 by @cclaus)
Add more flake8 tests (#917 by @cclaus)
Update test suite (#918 by @cclaus)
Avoid IndexError when row_values() returns an empty row (#920 by @cclaus)
Bugfix - remove wrong argument in batch_update docstring (#912 by @lavigne958)
Improvement - Add Worksheet.index property (#922 by @lavigne958)
Add ability to create directory if it does not exist before saving the credentials to disk. (#925 by @benhoman)
Update test framework and VCR and cassettes (#926 by @lavigne958)
Delete .travis.yml (#928 by @cclaus)
Update tox.ini with all linting commands under lint env (by @lavigne958)
Build package and docs in CI (#930 by @lavigne958)
Update oauth2.rst (#933 by @amlestin)
Update the link to the Google Developers Console (#934 by @Croebh)
allow tests to run on windows, add and improve tests in WorksheetTests, add test on unbounded range, use canonical range as specified in the API, add test cassettes, prevent InvalidGridRange, improve code formating (#937 by @Fendse)
fix fully qualified class names in API documentation (#944 by @geoffbeier)
fix editor_users_emails - get only from list not all users added to spreadsheet (#939 by @Lukasz)
add shadow method to get a named range from a speadsheet instance (#941 by @lavigne958)
auto_resize_columns (#948 by @FelipeSantos75)
add functions for defining, deleting and listing named ranges (#945 by @p-doyle)
Implement open sheet within Drive folder (#951 by @datavaluepeople)
Fix get range for unbounded ranges (#954 by @lavigne958)
remove potential I/O when reading spreadsheet title (956 by @lavigne958)
Add include_values_in_response to append_row & append_rows (#957 by @martimarkov)
replace raw string "ROWS" & "COLUMNS" to Dimension named tuple, replace raw string "FORMATTED_VALUE", "UNFORMATTED_VALUE", "FORMULA" to ValueRenderOption named tuple, replace raw string "RAW", "USER_ENTERED" to ValueInputOption named tuple (#958 by @ccppoo)
Do not overwrite original value when trying to convert to a number (#902 by @lavigne958)
Changed Worksheet.find() method returns None if nothing is found (#899 by @GastonBC)
Changed Worksheet.find() method returns None if nothing is found (#899 by @GastonBC)
Add Worksheet.batch_clear() to clear multiple ranges. (#897 by @lavigne958)
Fix copy_permission argument comparison in Client.copy() method (#898 by @lavigne958)
Alow creation of spreadhsheets in a shared drive (#895 by @lavigne958)
Allow gspread.oauth() to accept a custom credential file (#891 by @slmtpz)
Update tox.ini, remove python2 from env list (#887 by @cclaus)
Add SpreadSheet.get_worksheet_by_id() method (#857 by @a-crovetto)
Fix store_credentials() when authorized_user_filename is passed (#884 by @neuenmuller)
Remove python2 (#879 by @lavigne958)
Use Makefile to run tests (#883 by @lavigne958)
Update documentation Authentication:For End Users using OAuth Client ID (#835 by @ManuNaEira)
Allow fetching named ranges from Worksheet.range() (#809 by @agatti)
Update README to only mention python3.3+ (#877 by @lavigne958)
Fetch creation and lastUpdate time from SpreadSheet on open (#872 by @lavigne958)
Fix bug with Worksheet.insert_row() with value_input_option argument (#873 by @elijabesu)
Fix typos in doc and comments (#868 by @cclauss)
Auto cast numeric values from sheet cells to python int or float (#866 by @lavigne958)
Add Worksheet.get_values() method (#775 by @burnash)
Allow gspread.oauth() to accept a custom filename (#847 by @bastienboutonnet)
Document dictionary credentials auth (#860 by @dmytrostriletskyi)
Add Worksheet.get_note() (#855 by @water-ghosts )
Add steps for creating new keys (#856 by @hanzala-sohrab)
Add folder_id argument to Client.copy() (#851 by @punnerud)
Fix typos in docstrings (#848 by @dgilman)
Add Worksheet.insert_note(), Worksheet.update_note(), Worksheet.clear_note() (#818 by @lavigne958)
Add Worksheet.insert_note(), Worksheet.update_note(), Worksheet.clear_note() (#818 by @lavigne958)
Update documentation: oauth2.rst (#836 by @Prometheus3375)
Documentation fixes (#838 by @jayeshmanani)
Documentation fixes (#845 by @creednaylor)
Add Worksheet.insert_cols() (#802 by @AlexeyDmitriev)
Documentation fixes (#814 by @hkuffel)
Update README.md (#811 by @tasawar-hussain)
Add value_render_option parameter to Worksheet.get_all_records() (#776 by @damgad)
Remove requests from install_requires (#801)
Simplify implementation of Worksheet.insert_rows() (#799 by @AlexeyDmitriev)
Add auth.service_account_from_dict() (#785 b7 @mahenzon)
Fix ValueRange.from_json() (#791 by @erakli)
Update documentation: oauth2.rst (#794 by @elnjensen)
Update documentation: oauth2.rst (#789 by @Takur0)
Allow auth to be None. Fix #773 (#774 by @lepture)
Add Worksheet.insert_rows() (#734 by @tr-fi)
Add Worksheet.insert_rows() (#734 by @tr-fi)
Add Worksheet.copy_to() (#758 by @JoachimKoenigslieb)
Add ability to create a cell instance using A1 notation (#765 by @tivaliy)
Add auth.service_account() (#768)
Add Authlib usage (#552 by @lepture)
Deprecate Worksheet.delete_row()
Simplified OAuth2 flow (#762)
Fix Worksheet.delete_rows() index error (#760 by @rafa-guillermo)
Deprecate Worksheet.delete_row() (#766)
Scope Worksheet.find() to a specific row or a column (#739 by @alfonsocv12)
Add Worksheet.add_protected_range() #447 (#720 by @KesterChan01)
Add ability to fetch cell address in A1 notation (#763 by @tivaliy)
Add Worksheet.delete_columns() (#761 by @rafa-guillermo)
Ignore numericising specific columns in get_all_records (#701 by @benjamindhimes)
Add option folder_id when creating a spreadsheet (#754 by @Abdellam1994)
Add insertDataOption to Worksheet.append_row() and Worksheet.append_rows() (#719 by @lobatt)
Fix Python 2 SyntaxError in models.py #751
SyntaxError in models.py #751 (#752)Fix TypeError when using gspread in google colab
TypeError when using gspread in google colab (#750)Update docs: "APIs & auth" menu deprecation, remove outdated images in oauth2.rst (#706 by @manasouza)
Remove oauth2client in favor of google-auth #472, #529 (#637 by @BigHeadGeorge)
Convert oauth2client credentials to google-auth (#711 by @aiguofer)
Remove unnecessary login() from gspread.authorize
Fix sheet name quoting issue (#554, #636, #716):
utils.absolute_range_name() to handle range names (#748)Fix numericise(): add underscores test to work in python2 and <python3.6 (#622 by @epicfaace)
Add supportsAllDrives to Drive API requests (#709 by @justinr1234)
Add Worksheet.merge_cells() (#713 by @lavigne958)
Improve Worksheet.merge_cells() and add merge_type parameter (#742 by @aiguofer)
Add Worksheet.sort() (#639 by @kirillgashkov)
Add ability to reorder worksheets #570 (#571 by @robin900)
Spreadsheet.reorder_worksheets()Worksheet.update_index()Add test_update_cell_objects (#698 by @ogroleg)
Add Worksheet.append_rows() (#556 by @martinwarby, #694 by @fabytm)
Add Worksheet.delete_rows() (#615 by @deverlex)
Add Python 3.8 to Travis CI (#738 by @artemrys)
Speed up Client.open() by querying files by title in Google Drive (#684 by @aiguofer)
Add freeze, set_basic_filter and clear_basic_filter methods to Worksheet (#574 by @aiguofer)
Use Drive API v3 for creating and deleting spreadsheets (#573 by @aiguofer)
Implement value_render_option in get_all_values (#648 by @mklaber)
Set position of a newly added worksheet (#688 by @djmgit)
Add url properties for Spreadsheet and Worksheet (#725 by @CrossNox)
Update docs: "APIs & auth" menu deprecation, remove outdated images in oauth2.rst (#706 by @manasouza)
Support old and new collections.abc.Sequence in utils (#745 by @timgates42)
utils (#745 by @timgates42)Added Spreadsheet.values_batch_update()
Added Spreadsheet.values_batch_update() (#731)
Added:
Worksheet.get()Worksheet.batch_get()Worksheet.update()Worksheet.batch_update()Worksheet.format()Added more parameters to Worksheet.append_row() (#726)
Fix usage of client.openall when a title is passed in (#572 by @aiguofer)
Fixed gspread.utils.cell_list_to_rect() on non-rect cell list (#613 by @skaparis)
Fixed gspread.utils.cell_list_to_rect() on non-rect cell list (#613 by @skaparis)
Fixed sharing from Team Drives (#646 by @wooddar)
Fixed KeyError in list comprehension in Spreadsheet.remove_permissions() (#643 by @wooddar)
Fixed typos in docstrings and a docstring type param (#690 by @pedrovhb)
Clarified supported Python versions (#651 by @hugovk)
Fixed the Exception message in APIError class (#634 by @lordofinsomnia)
Fixed IndexError in Worksheet.get_all_records() (#633 by @AivanF)
Added Spreadsheet.values_batch_get() (#705 by @aiguofer)
Added stacklevel=2 to deprecation warnings
Dropped Python 2.6 support
Fixed KeyError in urllib.quote in Python 2 (#605, #558)
Fixed Worksheet.title being out of sync after using update_title (#542 by @ryanpineo)
Fix parameter typos in docs (#616 by @bryanallen22)
Miscellaneous docs fixes (#604 by @dgilman)
Fixed typo in docs (#591 by @davidefiocco)
Added a method to copy spreadsheets (#625 by @dsask)
Added with_link attribute when sharing / adding permissions (#621 by @epicfaace)
Added ability to duplicate a worksheet (#617)
Change default behaviour of numericise function #499 (#502 by @danthelion)
Added stacklevel=2 to deprecation warnings
Fixed #538 (#553 by @ADraginda)
This version drops Google Sheets API v3 support.
gspread.v4 module to gspread module.Fixed #533 (#534 by @reallistic)
URL encode the range in the value_* functions (#530 by @aiguofer)
Fetch all spreadsheets in Spreadsheet.list_spreadsheet_files (#522 by @aiguofer)
Ported the library to Google Sheets API v4. This is a transition release. The v3-related code is untouched, but v4 is used by default. It is encourage
Ported the library to Google Sheets API v4. This is a transition release. The v3-related code is untouched, but v4 is used by default. It is encouraged to move to v4 since the API is faster and has more features.
API v4 is a significant change from v3. Some methods are not backward compatible, so there's no support for this compatibility in gspread either.
These methods and properties are not supported in v4:
Spreadsheet.updatedWorksheet.updatedWorksheet.export()Cell.input_value* Remove deprecated HTTPError
Remove deprecated HTTPError
Fixed error when inserting permissions #431
Added spreadsheet sharing functionality
#429, #386
Fixed a missing return value in utils.a1_to_rowcol #428
utils.a1_to_rowcol #428Client.open_by_url #427updated property to Spreadsheet objects #426Fixed a missing return value in utils.a1_to_rowcol
Fixed url parsing in Client.open_by_url
Added updated property to Spreadsheet objects
Deprecated Worksheet.get_int_addr and Worksheet.get_addr_int in favour of utils.a1_to_rowcol and utils.rowcol_to_a1 respectively
Worksheet.range method to accept integers as coordinates #142default_blank parameter to Worksheet.get_all_records #423Worksheet.insert_row #338Worksheet.get_int_addr and Worksheet.get_addr_int in favour of utils.a1_to_rowcol and utils.rowcol_to_a1 respectivelyFix an exception format to support Python 2.6
Use request session's connection pool in HTTPSession
Your coding agent can read these notes before it upgrades. Set up the MCP server →