bassarisse / google-spreadsheet-to-json

Simple tool to export Google Spreadsheets to JSON files, though Node API or CLI
The Unlicense
134 stars 33 forks source link

Error while fetching spreadsheet from Google #33

Open prathameshnyt opened 2 years ago

prathameshnyt commented 2 years ago

Thank you for this library. We were using the following packages:

"google-spreadsheet-to-json": "^1.0.0",
"googleapis": "^43.0.0",

and they were working fine before but starting Aug 12 we are getting the following error while fetching the same spreadsheet:

OperationalError: Error: HTTP error 404 (Not Found) - <!DOCTYPE html><html lang="en"><head><meta name="description" content="Web word processing, presentations and spreadsheets"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0"><link rel="shortcut icon" href="//docs.google.com/favicon.ico"><title>Page Not Found</title><meta name="referrer" content="origin"><link href="//fonts.googleapis.com/css?family=Product+Sans" rel="stylesheet" type="text/css" nonce="sBQomUSdSKNA5ZAXojPK4g"><style nonce="sBQomUSdSKNA5ZAXojPK4g">/* Copyright 2021 Google Inc. All Rights Reserved. */
49s
68  .goog-inline-block{position:relative;display:-moz-inline-box;display:inline-block}* html .goog-inline-block{display:inline}*:first-child+html .goog-inline-

We have not changed anything from our side. Can you please suggest?

kamyweb commented 2 years ago

The same issue for us in the same date. The google spreadsheet is private and was already shared with our google api service account - as before.

muanto commented 2 years ago

same here

nickerlan commented 2 years ago

Same here

darylsze commented 2 years ago

same here, seems the changes recently from google about privacy affecting this lib

chichilatte commented 2 years ago

Same here. It's caused by Google pulling the rug on their Sheets v3 API in August 2021. I replaced this module with https://github.com/revolunet/spreadsheet-to-json

It's nearly a drop-in replacement. My old code was like...

var gsjson = require('google-spreadsheet-to-json')

// Some crazy way to get a token here.
// I was using google-tokens... https://github.com/bradoyler/google-tokens

const rows = await gsjson({
    spreadsheetId: documentId,
    token: token.credentials.access_token
})

New code is...


const { extractSheets } = require("spreadsheet-to-json");

// No token required, just make sure the document is shared (using the document's sharing UI)
// with the client_email mentioned in the service account keyfile.
// How do you get the keyfile? You create one in Google Cloud Console > IAM > Service Accounts.

const { ALL: rows } = await extractSheets({
    spreadsheetKey: documentId,
    credentials: require(`./.hiddenFromGit/my-google-generated-service-account-keyfile.json`),
})