https://github.com/appliedmedia/gsheet2json
Google Workspace Plug-in to Export and Import Google Sheet Tabs as JSON via Google Drive or Local Files for easy AI parsing
https://github.com/appliedmedia/gsheet2json
gdrive gsheet json parsing
Last synced: 13 days ago
JSON representation
Google Workspace Plug-in to Export and Import Google Sheet Tabs as JSON via Google Drive or Local Files for easy AI parsing
- Host: GitHub
- URL: https://github.com/appliedmedia/gsheet2json
- Owner: appliedmedia
- License: other
- Created: 2026-06-07T15:36:36.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-06-15T01:08:18.000Z (24 days ago)
- Last Synced: 2026-06-15T01:19:30.247Z (24 days ago)
- Topics: gdrive, gsheet, json, parsing
- Language: TypeScript
- Homepage: https://gsheet2json.com
- Size: 15.4 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# gsheet2json
  

Round-trip a Google Sheets tab to structured JSON and back, preserving values, formatting, formulas, data validations, dimensions, named ranges, and merged cells. Built for AI workflows: hand a tab to an LLM as JSON, let it edit, then import the result as a new tab with the formatting intact.
## Install
gsheet2json is a Google Sheets editor add-on. Install it from the Google Workspace Marketplace; the home and install link is [gsheet2json.com](). Once installed, open it from any sheet via Extensions, then gsheet2json, then Open.
## Using the sidebar
The add-on runs entirely in a sidebar inside Google Sheets. There are no external servers, and your data stays in your Google account.
* **Import** and **Export** are the two action cards, and each offers a local-file option and a Google Drive option.
* **Export** writes the active tab to a timestamped JSON file, saved to your Drive or downloaded locally.
* **Import** loads JSON from Drive, a local file, or pasted text into a staging editor. You review or edit it there, then run the import, which rebuilds the tab as a new sheet.
* A **progress bar** tracks long operations, since large sheets encode and decode server-side with live progress.
* An **activity log** records every operation with a success or failure marker and per-entry actions (open the Drive file, re-download, or forget the entry).
## JSON format
An export is a single JSON object describing one tab:
```json
{
"sheetName": "WebEval",
"rowHeights": { "r_00000": 28, "r_00001": "r_00000" },
"columnWidths": { "c_00000": 50, "c_00001": 220 },
"styles": { "s_base": {}, "s_score": { "base": "s_base", "bg": "#fff7e6" } },
"validations": { "dv_list": { "criteriaType": "VALUE_IN_LIST", "values": ["A", "B"] } },
"cells": { "r_00005_c_00004": { "t": "n", "v": 3, "s": "s_score" } }
}
```
### Styles
Styles are deduplicated to keep files small without losing fidelity.
* The first entry is always `s_base`, the most common style in the sheet. A cell with no `s` field inherits `s_base`.
* Other entries are either standalone (fully populated) or a delta: a `base` pointer plus only the properties that differ. Delta chains are bounded at three levels and are cycle-free.
* No reported property is dropped for merely looking like a default, which prevents silent inheritance bugs.
### Cells
Each cell entry is keyed `r_NNNNN_c_NNNNN` and may carry:
* `v` for the value and `t` for the type (`s` string, `n` number, `b` boolean, `d` date, `f` formula).
* `s` for the style id, omitted when it matches `s_base`.
* `f` for a formula, `l` for a named-range label, and `dv` for a data-validation id.
* `merge` on the top-left cell of a merged range, encoding the additional rows and columns to span.
## Development
```bash
npm install
npm run build # tsc, then rename outputs to .gs and copy the sidebar HTML + manifest
npm run push # build, then clasp push --force
npm test # type-check the suite and run the cucumber tests (excludes @gas)
```
`.clasp.json` holds the Apps Script project id and is not committed; create your own to push to a project you control. See [src/]() for the add-on source, [features/]() for the test suite, and [scripts/]() for build and release tooling.
## Help and community
* Questions and ideas: GitHub Discussions on this repository.
* Bugs and support: [g2j.support]().
* Privacy policy and terms: [docs/]().
## License
Code Transparency v1; see [LICENSE](). You may view, audit, and submit pull requests. Redistribution, derivative works, and commercial use require a separate license.