I have created Google Spreadsheet, and given edit access to all (can edit even without login).
Here is the link. I would like to update this sheet with Google Spreadsheet API. But I am getting error. My requirement is update the sheet thru API even without access credential.
You need to be authorized to make such requests
That's it. There's no bypassing authorization.
It is possible to write to spreadsheet without
OAuth
orAPI Keys
. You need to useService Account Keys
.Here is what I did for my Node.js environment.
Furnish a new private key
JSON
when it asks you how to download the key.service account key
you have just generated includes aclient_email
.client_email
to have write access on this documentUse the following code to authenticate
let jwtClient = new google.auth.JWT(client_email, null, private_key, [ "https://www.googleapis.com/auth/spreadsheets", ]); //authenticate request jwtClient.authorize(function(err, tokens) { // at this point the authentication is done you can now use `jwtClient` // to read or write to the spreadsheet });
client_email
andprivate_key
are part of theservice account key
A more detailed description can be found here. http://isd-soft.com/tech_blog/accessing-google-apis-using-service-account-node-js/ Also, all credit goes to this page.
Finally digged deep enough and found the answer. Any kind of writing, even to publicly editable sheets requires an OAuth flow:
https://issuetracker.google.com/issues/36755576#comment3