我正在尝试使用节点谷歌api下载一些excel文件。我找到了这个例子,但没有看到相同的结果。
运行类似的代码时,我得到Cannot read property 'pipe' of undefined
:
var output = fs.createWriteStream("./output/accounts/2016/" + file.name);
var test = drive.files.get({
fileId: file.gID,
alt: 'media'
}).pipe(output);
我试图记录get的返回值,只是得到undefined
:
var output = fs.createWriteStream("./output/accounts/2016/" + file.name);
var test = drive.files.get({
fileId: file.gID,
alt: 'media'
});
console.log(test);
我可以使用回调格式获取文件的文本。由于 excel 格式,下面的代码运行并打印出一堆特殊字符。使用 fs.writeFile(...)
保存然后使用 excel 打开不会导致格式正确,我仍然到处都有特殊字符,所有数据都在 A 列中。
var test = drive.files.get({
fileId: file.gID,
alt: 'media'
}, function (err, contents) {
console.log(contents);
});
有没有人遇到过这个问题?
经过更多的研究,我在github上发现了一些与此相关的旧问题。我猜到 OAuth2 的更新破坏了刷新令牌,需要手动刷新令牌才能返回响应对象。
来源: https://github.com/google/google-api-nodejs-client/issues/381
这是最终为我工作的代码:
var jwtClient = new google.auth.JWT(...);
jwtClient.refreshAccessToken(function(err, tokens) {
var test = drive.files.get({
fileId: googleFileId,
alt: 'media'
}).on('end', function() {
finished.call();
}).on('error', function(err) {
process.exit(err);
}).pipe(output);
});