2026-06-03
- #754 (minor) - upgrade ky from v1 to v2
If you use
doc.sheetsApiordoc.driveApidirectly, note that ky v2 changed its hook signatures (hooks now receive state objects instead of direct Request/Error params) and renamedprefixUrltoprefix. See the ky v2 migration guide for details.
- 74cdc44: Add searchDeveloperMetadata method and support DeveloperMetadataLookup filters in loadCells
- 71ee84d: Add retryConfig parameter to allow customising error handling
- fd12a3b: Fix crash when saving a row with all empty values, and ensure empty cells always return
''instead ofundefined - 557ce16: Allow setting
cell.stringValueto strings starting with=— they are now stored as literal string values instead of throwing an error
-
3edb1ba: Add deleteDimension, deleteRows, and deleteColumns methods to GoogleSpreadsheetWorksheet
-
a2f00b2: Add comprehensive data manipulation and convenience methods to GoogleSpreadsheetWorksheet:
Data Manipulation Methods:
- pasteData: Insert delimited data at a coordinate
- appendDimension: Append rows or columns to sheet
- textToColumns: Split delimited text into columns
- deleteRange: Delete cells and shift remaining
- deleteDimension: Delete rows or columns
- moveDimension: Move rows or columns
- sortRange: Sort data by columns
- trimWhitespace: Remove leading/trailing spaces
- deleteDuplicates: Remove duplicate rows
- copyPaste: Copy and paste ranges
- cutPaste: Cut and paste ranges
- autoFill: Fill cells with patterns
- repeatCell: Repeat cell data across range
- appendCells: Append cell data to sheet
- findReplace: Find and replace text
- randomizeRange: Randomize row order
Convenience Wrapper Methods (auto-fill sheetId):
- addNamedRange: Create named ranges in worksheet
- updateNamedRange: Update existing named ranges
- deleteNamedRange: Delete named ranges
- setBasicFilter: Set basic filter on sheet
- clearBasicFilter: Clear basic filter from sheet
- updateBorders: Update cell borders in range
Filter View Methods:
- addFilterView: Add filter views to sheets
- updateFilterView: Update existing filter views
- deleteFilterView: Delete filter views
- duplicateFilterView: Duplicate filter views
Conditional Formatting Methods:
- addConditionalFormatRule: Add conditional format rules
- updateConditionalFormatRule: Update or move conditional format rules
- deleteConditionalFormatRule: Delete conditional format rules
Banding Methods:
- addBanding: Add alternating row/column colors
- updateBanding: Update banding properties
- deleteBanding: Delete banded ranges
Developer Metadata Methods:
- createDeveloperMetadata: Create custom metadata
- updateDeveloperMetadata: Update existing metadata
- deleteDeveloperMetadata: Delete metadata
- c1db500: Implement autoResizeDimensions method to auto-resize rows or columns to fit their contents
- c1db500: Add deletePermission method to revoke access for a user, group, or domain
- c1db500: Implement insertRange method to insert empty cells in a range and shift existing cells
- c1db500: Add protected range CRUD operations (addProtectedRange, updateProtectedRange, deleteProtectedRange) on worksheets
- c1db500: Fix addNamedRange request body to correctly nest properties under namedRange key
- 20f1f31: do not bundle runtime deps
- a39cdd8: fix type issue with google-auth-library (fixes #726)
-
4f92ef9: Swap axios for ky - a thin fetch wrapper.
Mostly things should work exactly the same, but we'll do a major release just in case.
BREAKING CHANGE:
- export functions in stream mode now return a web ReadableStream
- 45229e4: add changesets
- 4f92ef9: swap lodash for es-toolkit
- Fix/googl auth library v10
#725 - fix row.assign to use Partial<T>
079c515 - fix download method issue when gid is 0
d53e189
- fix(updateProperties): getFieldMask ignore gridProperties
#674 - add dmno and remove/encrypt test-related secrets, swap jest for vitest
927e9e8
- Read headers in batch on getRows()
#693 - Fix type of sheetsById in docs
#658 - Update authentication.md
#699 - update axios, fix new google-auth-library issue, fixes #701 #700
#701 - fix setDataValidation docs
2bca048 - Update FUNDING.yml
5459a87 - use correct type in docs
6d210a2 - allow CI manual reruns
e10cbb1
- chore(deps): allow google-auth-library@^9.0.0
#657 - docs: remove outdated reference to
doc.useServiceAccountAuth()a60104b
- fix: match color style field to that in google api
fce1605
- docs: get/set are sync methods
#637 - docs(readme.md): fix wrong import
#633 - docs: docs cleanup and improvements
882bd73 - docs(small updates): fixed a few small grammar issues and copied readme to docs index
867bb63 - fix: handle trimming null/undefined header values
3ef8fcf - build: call build in release task
c306dc0
- fix: lodash imports needs explicit .js extension
4cad156
- chore: switch back from lodash-es to lodash to avoid ESM issues
c808eed
- Typescript rewrite!
903e923- no more lagging/outdated types from DefinitelyTyped (
@types/google-spreadsheet) - refactor
GoogleSpreadsheetRowto be more TS friendly - add new typed value getters/setters to
GoogleSpreadsheetCell(stringValue,boolValue,numberValue) cell.formulaError->cell.errorValue- refactor authentication to rely directly on google-auth-library as a peer dependency
- support Application Default Credentials (auto inject credentials in some environments)
- refactor document creation into static method, similar auth setup
- support basic sharing / permissions management (drive api)
- support document delete
- replaced
GoogleSpreadsheetFormulaErrorwithGoogleSpreadsheetCellErrorValueand now handles all possible cell error types - fully deprecated
sheet.getInfo,
- no more lagging/outdated types from DefinitelyTyped (
- chore: set up release tooling (release-it, auto-changelog, commitizen)
dc831e3
13 May 2022
- add sheet.duplicate, clean up dependencies, docus updates
4cec425 - bump/audit dependencies
42d918b - add export methods
07b0783 - clearRows and clear(range)
5bfa235 - clarify docs around loading cells
c1d2f23
7 November 2021
- Bump path-parse from 1.0.6 to 1.0.7
#492 - Bump hosted-git-info from 2.8.5 to 2.8.9
#463 - Bump handlebars from 4.6.0 to 4.7.7
#458 - Bump normalize-url from 4.5.0 to 4.5.1
#479 - Bump tmpl from 1.0.4 to 1.0.5
#511 - Bump ws from 5.2.2 to 5.2.3
#519 - Bump y18n from 4.0.0 to 4.0.3
#520 - Bump docsify from 4.10.2 to 4.12.1
#521 - insertDimension cleanup
71cf945 - add insertDimension functionality
6a4a9b9 - add tests for insertDimension
84d0a3a - custom header row index
198e9c3 - small readme clarification
8c0932c - update axios
0058852 - actually bump lodash...
402885b - fix docs typo
94cdf90
6 November 2021
- version 3.1.15 - oauth support
b11da48 - fix: package.json & package-lock.json to reduce vulnerabilities
197e351 - Bump ini from 1.3.5 to 1.3.8
77f5372 - Minor update to OAuth docs
faad98c
26 December 2020
- Collocate OAuth code in one class
c76fe26 - Use google's oAuth2client directly
e951b14 - Implement useOAuth
a8552c7 - Update OAuth docs
c1d69d1 - Fix bugs around refreshing
c0a5572 - fix merge/unmerge tests
4cfc776 - Bump version
30aff76 - Update main README
3d2083e - Fix missing async
5f1c03a
27 November 2020
- Bump dot-prop from 4.2.0 to 4.2.1
#413 - Bump node-fetch from 2.6.0 to 2.6.1
#391 - Bump yargs-parser from 13.1.1 to 13.1.2
#389 - Merge and unmerge cells
#385 - update readme to include add sheetsByTitle
#388 - fixing error message
#398 - create new doc functionality, readme updates
28d4f6e - Added merge and unmerge cells operations
9d30a61 - upgrade google-auth-library
9efcade - merge/unmerge docs
a7aabfe - bump npm version
2b4bc7e - fixing error message to conform to others
7bd4a82
17 August 2020
- swap location of readme file and symlink so its within the GH pages publishing source
30578c2 - npm did not like the symlinked readme. Github doesnt like it either. Revert to copying the file, but added a script
250c702 - fix small docs issue
15cbcb4 - fix test
21f97a0
17 August 2020
- Fix Link to GoogleSpreadsheetCell in README.md
#380 - Feature/service account impersonation
#358 - Add sheetsByTitle getter
#349 - Bump acorn from 5.7.3 to 5.7.4
#319 - doc: rm getRows side-effect
#320 - doc: scroll to page top on navigation
#324 - use symlink for docs readme, add impersonate docs
d2fbc5c - bump dependency versions
4ae02d9 - fix bug setting background color
626581b - add doc.sheetsByTitle getter
37084fd - fix addRows offset issue - force google API to start add rows at column A
5c24469 - short doc for impersonateAs option of useServiceAccountAuth
1e30921 - add impersonateAs option for useServiceAccountAuth
c0e4b5f - package version bump - 3.0.12
301dfa9
12 April 2020
- fix loadCells when using an API key only
15a3619
14 March 2020
- add short delays when running tests in CI to avoid rate limits
188374f - fix bug loading multiple cell ranges
abb8217
28 February 2020
- add options when inserting/saving rows for RAW and INSERT modes
a6baa65 - update docs - fix saveCells, update emojis
0102f1c - bunch of fixes
dc38223 - fix saveCells
f6cfcc3 - add doc.useRawAccessToken to allow oauth usage
0bdf5b2 - fix readme badges
e38181b - update readme with deprecation info
d4853bc - fix github link on docs site
85c59bc
13 February 2020
- do not add dangling comma on functions
#299
12 February 2020
- add sheet.addRows() to add multiple rows at once
6914fb6 - fix bug when loading empty cell multiple times
be80634 - version bump
08976fe
11 February 2020
- Minor doc fix
#288 - Docs Sample Code - "loadCells" instead of "getCells"
#291 - V3.0 - rewrite using google sheets v4 api
#269 - fix broken cell.save()
69e98b3 - throw original error if response body doesnot have more info
c19dc22 - version bump
786be59 - Fix typo in docs
f933c17
6 February 2020
- fix docs links, fix encoding on row save and sheet clear, better errors for empty headers
6c035a3
4 February 2020
- support special chars in sheet names that are used in URLs
561c6eb - fix sheetcount, make row props enumerable
bd8eba6
4 February 2020
- better handling of empty headers and dupes
30ec42c
3 February 2020
- rename doc.getInfo to loadInfo
87812c3
3 February 2020
- readme import typo!
1e63a36
3 February 2020
3 February 2020
- deprecation warning
#272
3 September 2019
15 January 2019
- Fix formatting
6f50866 - Move value setter/getter to prototype
d6d299e - Move from var to prototype functions
3870b98 - Move updateValuesFromResponseData to prototype
2a30fde - Move save to prototype
6da73df - add getters for "edit" and "self" links, and don't set them if they match our pattern
09b0591 - Move numericValue setter/getter to prototype
da9ff6f - Move formula setter/getter to prototype
49473c5 - xml_parser only needed there
f4c929a - handle feed request functions that need 3rd callback parameter ( raw xml )
689c56c - the same for "id" - if it matches our pattern, then construct it instead of saving long url strings in each cell
bd813eb - Move getSelf to prototype
ac70e40 - Move getEdit to prototype
9458bd7 - Move getId to prototype
9a93a74 - Move clearValue to prototype
6df93a7 - Move valueForSave getter to prototype
31cc75e - Move setValue to prototype
1d35038 - [eslint] fixed smaller eslint issues
969b25e - Move del to prototype
b34b969 - more memory friendly way to cycle through entries - we get rid of old entries after they've been added
1795596 - Expose SpreadsheetCell
6c5527a - [eslint] fixed spreadsheet not defined error
f66ad9b - [eslint] removed shadowing of data and unused i
d081f27 - delete response body, since we have a parsed result already
f01ee4b - version bump to 2.0.7
0e5f3f7 - [eslint] removed shadowing of opts
049e1ae - request nowadays handles gzip compression automatically - worth a try if it's supported
04498e5
3 October 2018
- Fix security
#213 - fix vulnerabilities
1b911a5 - fix lodash deprecation
e5b46b4 - travis ci
c454647 - version bump to 2.0.6
0842d52
25 June 2018
- Fixes #205
#208 - Merge pull request #208 from jpike88/patch-1
#205 - version bump for google auth dependency
935d399 - Security fix
0cd7b25
26 May 2017
- Made cell.save consistent with row.save in terms of requiring a callback (#105)
#114 - Show how to catch errors using async in README
#113 - make sure google_auth is not empty
#149 - fix link to structured query
#147 - Added missing step on creating API Key
#130 - Fix vars leaking into global scope
#121 - Fix sample code in README.md
#134 - Writing requires authentication
#139 - #128 LF and CR in SpreadsheetCell.save
#129 - fix GoogleSpreadsheet.removeWorksheet with tests and docs
868ad3f - return the row object when adding a new row, with tests and docs
0b241d6 - reorder new cell linefeed test
cf67752 - #128 fix LF and CR in SpreadsheetCell.save
12b7acc - Made cell.save consistent with row.save in terms of requiring a callback. (#105)
d1a2dc5 - Show how to catch errors using async
b86ea1f - Scope
linksvars to prevent global leakage6af5c86 - version bump!
f233257 - fix failing author test, not sure why case changed!
5a52afa
10 May 2016
- fix typo on GooogleSpreadsheet
23f25f9
4 May 2016
- Update readme to show syntax highlighting
#96 - fix readme
31a6fb5 - improve cells test file
8460b18 - version bump for fixed readme (to republish)
79d1435 - fix readme note about heroku
5affe0c
27 March 2016
- bugfix for undefined inputValue
60ba19e
16 March 2016
- Making title work (likely due to a Google change)
#65 - V2.0! FULL TEST SUITE! FIXES + IMPROVEMENTS!
fbe9d82 - fix gdata version 3 bug with save on getRows result
a7f8dc4 - rename getRows options and fix docs
f65c746 - use if-match header on PUT + bump version
4dad296 - remove extra xml tag
9868a85 - bump version for title fix
7d15a76
25 October 2015
- Add id to spreadsheet info
#42 - Add functions to delete and add worksheets
#55 - Added inputValue to SpreadsheetCell.
#54 - Update README.md
#43 - Add id to spreadsheet info
#1 - rework bulk cell saving and updating formulas!
5b1917e - Add GoogleSpreadsheet.bulkUpdateCells()
900ce3a - Implement Spreadsheet.addWorksheet()
35acdac - update service auth instructions to match google UI
23b6de2 - Implement SpreadsheetWorksheet.del()
95629e1 - bump version #
1fdae13 - add gdata header 3.0
0efbcbb - add doc about
idprop in getInfo[05406d0`](https://github.com/theoephraim/node-google-spreadsheet/commit/05406d08efc50f1efd4c72ed7f9d45dd98a55fdb)
6 July 2015
- cleanup readme
f30f4dc
5 July 2015
- Update README.md
#36 - v1.0.0 - rebuild auth stuff to support service accounts and add docs
b295ddb - improve docs
4775eec
27 April 2015
- Adding numericValue property to cell
#13 - add better error message for private sheets
cbedb87 - Added numericValue to cell.
f6beb06
27 April 2015
- making sure query isn't null on getRows
#18 - Show what actually went wrong when saving a row
#20 - Added options visibility & projection
#25 - Error when request does not receive expected response
#26 - README.md: Fixed typographical error ('alot' -> 'a lot').
#28 - Missing parentheses in the example
#19 - Check if worksheet_id is a number and greater than 0
#10 - Update index.js
#11 - Updated google client login dependency
#9 - fix bugs, add docs, v0.3.0!
160824c - Check if worksheet_id is a number and greater than 0, since 0 is a valid worksheet id
2b53c69 - silence logging
b0946ee - making sure query isn't null
06ffe10 - added return empty
c6bc1ea - Turns out it had two missing parentheses
cb4fad1 - The example had a missing parentheses so it threw a run-time error
12b3c03
12 March 2014
- minor cleanup
61b3b6a
9 December 2013
- Better Column Name Handling
#4 - Swapped out hardcoded version number in readme for gemfury badge
#3 - Fixed README indentation and added explicit syntax highlighting
#1 - Fixes #1 by modifying regex to cope with new lines in the text (http://stackoverflow.com/questions/1068280/javascript-regex-multiline-flag-doesnt-work)
#1 - update dependencies to fix some inconsistent encoding issues
08cfaf1 - Upgraded xml2js to fix problem with reading newlines, also added tests!
6093d41 - initial code to handle cell-based feeds
6a0bb39 - Cleanup - remove unused tests, update readme
d0fd8c8 - Cope with updating entries that contain new lines, slight improvement in loading data with new lines (I think)
53c375f - Added very low level support for querying list-based feeds
a75f976 - Fix for inserting new rows with 0 values
2bf2eba - Fixed readme example
37866c8 - Fix for column names with uppercase and whitespace characters.
5fe1a57 - Removed console output
b693536 - Version bump
e700edd - Updated package.json with better keywords and description
926e404
4 March 2013
- v0.2.0 rewrite - now built-in auth, edit/add/deleting rows, major code cleanup
5a15dc3 - (Un)licensed the project.
58583b5
9 February 2013
- minor patches
#8 - The repo your repo could be like!
#6 - Support some API options and fixed handling "gsx" response.
#4 - Support some API request options
337e52b - Wrote a couple of tests. They hit actual goog api tho - so kinda slow.
56bde4a - .gitignore. pedantic semicolon. basic example code.
edde04e - README updates.
331a15d - .npmignore
9205e22 - Removed TODO from README.
3d6ef69 - show require in googleclientlogin example.
71c70f5 - 💎 Added travis.yml file 💎
a08d77d - bumped to 0.1.0
bfa6a2c - derp - wrong require path for test code.
b94479d - fixed indent.
830ceae - xml parser fix per issue #7.
2853816 - 💎 Travis CI image/link in readme 💎
9ebe382
9 November 2011
9 November 2011
1 August 2011