2013-08-20 4 views
4

Я пытаюсь получить содержимое файла таблицы Google Диска через node.js. Я использую google-api-nodejs-client, чтобы получить access_token и модуль node-google-drive, чтобы получить file_id.Получить содержимое электронной таблицы Google Диска в формате CSV

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

Когда я вошел в Google Drive, и я иду к этому URL выше он загружает таблицу в формате CSV. Когда я пытаюсь перейти к этому URL-адресу в инкогнито, он показывает страницу входа, которая является той же самой страницей, которую я получаю в теле моего запроса в узле.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); 
}); 

Я попытался отправить Authorization заголовок, но я все еще получаю ответ HTML. Содержащие Sorry, the file you have requested does not exist.

+0

Попробуйте проверки заголовка браузер посылает, когда вы вошли в систему и посетить эту страницу и сравнивая их с тем, что отправляет запрос. Затем попробуйте устранить различия один за другим. В какой-то момент он, вероятно, должен начать работать. Я ничего не знаю об этом конкретном API, но я не удивлюсь, что он работает, если вы отправите файл cookie для входа. – mikl

+0

Спасибо за рекомендацию, но это не сработало. – ThomasReggi

+0

Любые выводы по этому вопросу? Я пытаюсь сделать то же самое. Благодаря! – couzzi

ответ

3

Используйте это: https://github.com/jpillora/node-edit-google-spreadsheet

Пример

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); 
    }); 
} 

С уважением,