首页 > 解决方案 > 将文档导出到本地 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

当我尝试从我的方法中保存字符串时,当我尝试打开它时会得到一个损坏的文件。

我究竟做错了什么?

标签: node.jsfilegoogle-drive-apiexport

解决方案


我相信你的目标如下。

  • 您想使用 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 方法。

参考:


推荐阅读