Question

I've seen numerous articles on this but they seem outdated, for instance none of the Google Docs Spreadsheet urls has key parameter. I read this as well: JSON data from google spreadsheet

Then I read this to access data https://developers.google.com/gdata/samples/spreadsheet_sample

My spreadsheet exists at: https://docs.google.com/spreadsheets/d/1SKI5773_68HiSve1fsz7fr4gotjFWHB7KBuVsOlLz6I/edit#gid=0

I've tried using this code, I think I have a problem with the key or syntax, please guide to fix.

<script src="http://spreadsheets.google.com/feeds/feed/1SKI5773_68HiSve1fsz7fr4gotjFWHB7KBuVsOlLz6I/worksheet/public/basic?alt=json-in-script&callback=importGSS"></script>

<script type="text/javascript">

    function importGSS(json) {
        console.log('finished');
    }
</script>
Was it helpful?

Solution

The src attribute in your script tag is an invalid link (and you can see this for yourself by viewing your link directly in a browser).

The feed/key/worksheet section of the URL has the right key but the wrong feed and worksheet.

In the URL, replace "feed" with either "cells" (separate value for each cell) or "list" (separate value for each row).

At the same time, replace "worksheet" with "od6" (indicating the leftmost, or default, sheet - see this blog post for accessing other sheets).

If you view this new URL directly in a browser, you can see that it returns a meaningful value.

Your final script tag might look like this:

<script src="https://spreadsheets.google.com/feeds/list/1SKI5773_68HiSve1fsz7fr4gotjFWHB7KBuVsOlLz6I/od6/public/values?alt=json-in-script&callback=importGSS"></script>

For more info, you can see an example on the Google Developers site

OTHER TIPS

APISpark PaaS has a feature to create and deploy a custom JSON API based on a GSpreadsheet. That might help and give you more control on the web API (CORS support, authentication, custom domain and so on).

See the tutorial here: https://apispark.com/docs/tutorials/google-spreadsheet

You may consider use an alternative to this request of your sheet data, because this method is deprecated. Anyway, you can still using another feed format, you can see this alternatives in: https://spreadsheets.google.com/feeds/worksheets/your-spreadsheet-id/private/full

In that result you can see any export formats are availables. Can help you an CSV or alt JSON visualization format?

Another potential solution here is to use this https://gist.github.com/ronaldsmartin/47f5239ab1834c47088e to wrap around your existing spreadsheet.

Add the id and sheet html param to the URL below.

https://script.google.com/macros/s/AKfycbzGvKKUIaqsMuCj7-A2YRhR-f7GZjl4kSxSN1YyLkS01_CfiyE/exec

Eg: your id is your sheet id which is

1SKI5773_68HiSve1fsz7fr4gotjFWHB7KBuVsOlLz6I

and your sheet which is

Sheet1

In your case you can actually see your data (it's actually working) here as json at

https://script.google.com/macros/s/AKfycbzGvKKUIaqsMuCj7-A2YRhR-f7GZjl4kSxSN1YyLkS01_CfiyE/exec?id=1SKI5773_68HiSve1fsz7fr4gotjFWHB7KBuVsOlLz6I&sheet=Sheet1

To be safe, you should deploy the code sheetAsJson.gs in the github gist above as your own in your Google Drive.

You have plenty of possible answers above. For those that come anew, if you're looking for a more controlled JSON generator, check out this gist:

JSONPuller

It takes in a Spreadsheet and returns an array of objects, with the lined that you decide as the headers (defaults to whichever line is frozen)

Cheers,

The easiest way for me was to export spreadsheet to CSV

File -> Download -> Comma-separated values

Then just convert CSV to JSON with free online servic

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top