node.js - 将文档导出到本地 google api 时出现问题
问题描述
我在通过 googleapis 节点从谷歌驱动器下载文件时遇到了一些真正的麻烦。
这是我目前正在努力的代码
drive.files.export(
{
auth: this.jwtToken,
fileId: fileId,
mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
},
async function (err, file, response)
{
console.log(file.data);
}
)
输出如下文本:
�0$Ҡċ�E��4���G��[�V�%�;]�4,횕9�M������;
�� o����(�* S��Ca�VJ�e\a���}8x%3�a֩�3��L��4f�4�:�<H2�`�ʗ� � ��-6�g������[K������[���M��&zD1��S������@�ǽ5�b��ظ��w�~�� “#-�P\ϲ�lt�!Q��M�”</p>
但是当我使用谷歌示例中的代码时,如下所示: https ://developers.google.com/drive/api/v3/manage-downloads
我收到以下错误:
TypeError: drive.files.export(...).on is not a function
当我尝试从我的方法中保存字符串时,当我尝试打开它时会得到一个损坏的文件。
我究竟做错了什么?
解决方案
我相信你的目标如下。
- 您想使用 googleapis for Node.js 将 Google 文档导出为 Microsoft DOCX 格式。
- 您已经能够使用 Drive API 获取文件内容。
问题:
不幸的是,我认为官方文档中的 Node.js 脚本可能没有更新。由此,发生错误。当您使用最新版本的 googleapis for Node.js(现在是googleapis@59.0.0
.)时,下面的示例脚本怎么样?
示例脚本:
const fileId = "###"; // file ID of Google Document.
const dest = fs.createWriteStream("###"); // Filename. Google Document is saved as the DOCX format to this file.
drive.files.export(
{
auth: this.jwtToken,,
fileId: fileId,
mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
},
{ responseType: "stream" },
function (err, response) {
if (err) {
console.log(err);
return;
}
response.data
.on("end", function () {
console.log("Done.");
})
.on("error", function (err) {
console.log("Error during download", err);
return process.exit();
})
.pipe(dest);
}
);
笔记:
- 在这个答案中,它假设您使用的是最新版本的 googleapis for Node.js。在现阶段,是
googleapis@59.0.0
。请注意这一点。 - 当您要下载除 Google Docs 文件(Document、Spreadsheet、Slides 等)以外的文件时,请使用 get 方法而不是 export 方法。
参考:
推荐阅读
- python - 如何从表的第一列获取前 8 个字符以及如何使用 python 从 postgresql 导入它;
- graphql - i18next 如何检测存储在数据库中的语言偏好?
- javascript - Laravel 在提交时添加加载器
- regex - 在 Grafana 面板中隐藏列
- javascript - PHP表单提交获取返回值到html
- django - 如何将查询集中的对象呈现给 Django 模板中的不同标签?
- node.js - 使用 KafkaJS 时出现 Kafka 连接错误
- mongodb - $and Query 无法搜索两列
- jenkins - 通过詹金斯将根 pom.xml 部署到工件?
- arrays - 在 Android Gridview 中显示 JSON 数据的问题