【问题标题】:Get contents of Google Drive spreadsheet in CSV format以 CSV 格式获取 Google Drive 电子表格的内容
【发布时间】:2013-08-20 22:12:55
【问题描述】:

我正在尝试通过 node.js 获取 Google Drive 电子表格的文件内容。我正在使用google-api-nodejs-client 来获取access_tokennode-google-drive 模块来获取file_id

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

当我登录 Google Drive 并转到上面的 URL 时,它会下载 CSV 格式的电子表格。当我尝试以隐身方式访问该 URL 时,它会显示一个登录页面,这与我在 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);
});

我已尝试发送 Authorization 标头,但仍收到 HTML 响应。包含Sorry, the file you have requested does not exist.

【问题讨论】:

  • 尝试检查浏览器在您登录并访问该页面时发送的标题并将其与请求发送的内容进行比较。然后尝试一一消除差异。在某个时候,它可能应该开始工作。我对这个特定的 API 一无所知,但如果你发送登录 cookie,我不会感到惊讶。
  • 感谢您的推荐,但没有成功。
  • 这方面有什么线索吗?我正在尝试做同样的事情。谢谢!
  • 我使用了错误的 google drive api“范围”,这就是它无法正常工作的原因。
  • @ThomasReggi 您介意记录下您的回答吗?我很好奇。谢谢!

标签: node.js request google-drive-api


【解决方案1】:

使用这个: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);
  });
}

问候,

/t

【讨论】:

    猜你喜欢
    • 2012-09-01
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多