首页 > 解决方案 > 在 Google Drive API v3 中使用 drive.files.copy 通过 nodejs 使用 API 将 Word 文档转换为 Google 文档

问题描述

我正在尝试通过 nodejs 使用 API 将 Word 文档转换为 Google 文档。文档一词已经在一个文件夹中,我只想将它们转换为谷歌文档。我正在使用 v3。

v3 文档说,为了使用副本转换文件,您需要将转换参数替换为资源正文中的 mimeType。

我不知道该怎么做?

function listFiles(auth) {
  const drive = google.drive({version: 'v3', auth});
  drive.files.list({
    q: "mimeType = 'application/msword'",
    pageSize: 100,
    fields: 'nextPageToken, files(id, name)',
  }, (err, res) => {
    if (err) return console.log('The API returned an error: ' + err);
    const files = res.data.files;
    if (files.length) {
      console.log('Files:');
      files.map((file) => {
        console.log(`${file.name} (${file.id})`);
        drive.files.copy({
          fileId: file.id,
          'name' : 'Updated File Name',
          'mimeType' : 'application/vnd.google-apps.document'
        })
      });
    } else {
      console.log('No files found.');
    }
  });
}

不确定我是否非常了解如何引用资源主体。会感激一个指导吗?

标签: javascriptnode.jsms-wordgoogle-drive-apigoogle-docs

解决方案


  • 您想使用 Drive API v3 中的 files.copy 方法将 Microsoft Word(doc 文件)转换为 Google Document。
  • 您想使用 googleapis 和 Node.js 来实现这一点。
  • 您已经能够使用 Drive API 为 Google Drive 获取和放置文件。

如果我的理解是正确的,这个答案怎么样?请认为这只是几个可能的答案之一。

修改点:

  • 我认为这drive.files.list()适用于您的脚本。
  • 我认为这drive.files.copy()有一个修改部分。
    • 请在或中包含name和。mimeTyperequestBodyresource
    • 在这种情况下,它使用回调函数来检索错误消息。

修改后的脚本:

从:
drive.files.copy({
  fileId: file.id,
  'name' : 'Updated File Name',
  'mimeType' : 'application/vnd.google-apps.document'
})
到:
drive.files.copy(
  {
    fileId: file.id,
    requestBody: {  // You can also use "resource" instead of "requestBody".
      name: file.name,
      mimeType: "application/vnd.google-apps.document"
    }
  },
  (err, res) => {
    if (err) return console.log("The API returned an error: " + err);
    console.log(res.data);  // If you need, you can see the information of copied file.
  }
);
  • 在这种情况下,通过删除扩展名使用 DOC 文件的文件名。并将复制的文件与 DOC 文件放在同一文件夹中。

笔记:

  • 在这个修改后的脚本中,它假设您设置的范围可以用于使用drive.files.copy(). 如果发生与范围相关的错误,请添加https://www.googleapis.com/auth/drive到范围。

参考:

如果我误解了您的问题并且这不是您想要的方向,我深表歉意。


推荐阅读