google-drive-api - 从 google drive api 下载 xls/xlsx 文件
问题描述
我正在尝试下载 xls 或 xlsx 文件,但出现错误:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "fileNotExportable",
"message": "Export only supports Docs Editors files."
}
],
"code": 403,
"message": "Export only supports Docs Editors files."
}
}
我正在使用nodejs。是否可以通过 api 下载 xls xlsx 文件?
代码示例:
export function getFileFromStream(auth, fileId, mimeType) {
const destPath = `/tmp/${fileId}.xls`;
const dest = fs.createWriteStream(destPath);
return new Promise(async (resolve, reject) => {
const drive = google.drive({version: 'v3', auth});
drive.files.export(
{ fileId, mimeType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'},
{ responseType: 'stream'},
(errrr, response) => {
response.data
.on('end', function() {
console.log('downloaded')
})
.on('error', function(err) {
console.log('Error during download', err);
})
.pipe(dest);
});
});
}
解决方案
文档示例中使用的files.export方法只能用于下载 Google Workspace 文档
要下载非 Google Workspace 文档,您需要使用示例中的files.get方法下载存储在 Google Drive 上的文件:
export function getFileFromStream(auth, fileId, mimeType) {
const destPath = `/tmp/${fileId}.xls`;
const dest = fs.createWriteStream(destPath);
return new Promise(async (resolve, reject) => {
const drive = google.drive({version: 'v3', auth});
drive.files.get({
fileId: fileId,
alt: 'media'
})
.on('end', function () {
console.log('Done');
})
.on('error', function (err) {
console.log('Error during download', err);
})
.pipe(dest);
}
推荐阅读
- java - 如何从android java String中提取子字符串?
- c++ - 成对展开可变参数模板包
- indexing - 正确存储/检索 termVector
- c# - Show() 方法不会在一秒钟前隐藏的图片框中显示 .gif
- python-3.x - 循环遍历 Pandas 中的分组列
- node.js - 在nodejs中导出的自定义模块中使用函数的问题
- entity-framework - 在实体框架中使用 lambda 语法进行多重左连接
- javascript - 打开 Google Drive Picker 时出错 - 您请求的功能当前不可用。请稍后再试
- javascript - 在 Google 表格上选择范围后,如何将所选内容粘贴到 Google 文档中?
- java - 我如何接受带有 jsoup 的 cookie?