Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get contents of Google Drive spreadsheet in CSV format

I am trying to get the file contents of a Google Drive Spreadsheet via node.js. I am using the google-api-nodejs-client to get the access_token and the node-google-drive module to get the file_id.

"https://docs.google.com/feeds/download/spreadsheets/Export?key="+file_id+"&exportFormat=csv&gid=0"

When I'm logged into the Google Drive and I go to that URL above it downloads the spreadsheet in CSV format. When I try to go to that URL in incognito it shows a login page, which is the same page I'm getting in the body of my request within node.js.

request({
    "method":"get",
    "url": "https://docs.google.com/feeds/download/spreadsheets/Export",
    "qs":{
        "key": key,
        "exportFormat": "csv",
        "gid": 0
    },
    "headers":{
        "Authorization": "Bearer " + token
    }
}, function(err, response, body){
    console.log(response);
});

I've tried to send a Authorization header, but I'm still getting an HTML response. Containing Sorry, the file you have requested does not exist.

like image 464
ThomasReggi Avatar asked Oct 21 '22 02:10

ThomasReggi


1 Answers

Use this: https://github.com/jpillora/node-edit-google-spreadsheet

Example

var Spreadsheet = require('edit-google-spreadsheet');

Spreadsheet.create({
  debug: true,
  username: [GOOGLE USERNAME],
  password: [PASSWORD],
  spreadsheetName: 'node-edit-spreadsheet',
  worksheetName: 'Sheet1',
  spreadsheetId: '[DOC ID]',
  callback: run
});

function run(err, spreadsheet) {
  if(err) throw err;
  //receive all cells
  spreadsheet.receive(function(err, rows, info) {
    if(err) throw err;
    console.log("Found rows:", rows);
    console.log("With info:", info);
  });
}

Regards,

/t

like image 142
Tom Maslen Avatar answered Oct 27 '22 09:10

Tom Maslen