JSON for Sheets turns JSON into a clean Google Sheets table.
JSON for Sheets is a Google Sheets add-on that lets you paste JSON or connect an API, preview the fields and rows, and insert the result as structured spreadsheet columns. No script or product API key to configure.
Why JSON for Sheets requests Google access
The add-on reads and writes only the spreadsheet you have open. Pasted JSON, formula parsing, and range-to-JSON export are processed inside the spreadsheet and never sent to us. Remote API imports go through our service so caching, quotas, and URL safety checks can be applied — those responses are cached for the TTL you choose and never logged in full.
Read the privacy policy →From an endpoint to columns you can pivot.
Point it at the data
Paste JSON, read it from a cell, enter a URL, or paste a cURL command. Bearer tokens, API keys, and basic auth are saved as encrypted connections.
Choose the shape
Browse the response as a tree, tick the fields you want, pick how nested arrays behave, and read the exact row and column count before anything is written.
Write it where you want
Overwrite the managed range, append rows, or update-or-append by a unique key. Refresh by hand, on a formula, or on a daily or hourly schedule.
Nothing to install to see how it works.
Nested arrays, decided by you.
Most importers guess what to do with an array inside a record, and you find out after it has written 4,000 rows. Pick the behaviour first and see the result in the preview. Source record: {"id":8842,"tags":["rush","gift"]}
JSON out, as well as in
Select a range with a header row and get an array of objects back — for a webhook body, a config file, or an API you are testing. Array, object, and row-array shapes, compact or pretty.
The local toolbox is unmetered
Validating, formatting, querying, flattening, inspecting a schema, and converting between JSON and tables all run inside the spreadsheet. No sign-in, no request count, no data leaving the sheet.
The short version
Do I need an API key from you?
No. You supply the API you are calling, and its credentials if it needs them. There is nothing of ours to configure.
What counts as a request?
One upstream fetch that returns valid JSON. Failures, blocked URLs, cached reads, and every local function are free. See the exact rules →
Does my pasted JSON leave the sheet?
No. Paste, preview, formulas, and range-to-JSON export are processed in the spreadsheet. Only remote fetches reach our service.
Where do my tokens live?
In encrypted connections on our server, referenced by ID. Never in a cell, a formula argument, a saved request body, or a log.
Can imports refresh themselves?
Yes — daily on Starter, hourly on Pro, using a spreadsheet trigger you authorise. Manual refresh works on every plan.
Will it overwrite my other columns?
No. Each import tracks the range it manages, asks before touching data outside it, and never deletes rows on a refresh.
Try it on your next awkward endpoint.
250 requests a month, unlimited local functions, no card.