使用 API 通过 Nodejs 使用 Drive.files.copy 将 Word 文档转换为 Google 文档 在 Google Drive API v3 中进行转换

Hea*_*ger 3 javascript ms-word google-docs node.js google-drive-api

我正在尝试通过 Node.js 使用 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.');
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

不确定我是否完全理解如何引用资源主体。会感激一头牛吗?

Tan*_*ike 5

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

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

修改要点:

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

修改后的脚本:

从:
drive.files.copy({
  fileId: file.id,
  'name' : 'Updated File Name',
  'mimeType' : 'application/vnd.google-apps.document'
})
Run Code Online (Sandbox Code Playgroud) 到:
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.
  }
);
Run Code Online (Sandbox Code Playgroud)
  • 在这种情况下,通过删除扩展名来使用 DOC 文件的文件名。并将复制的文件与DOC文件放在同一文件夹中。

笔记:

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

参考:

如果我误解了你的问题并且这不是你想要的方向,我很抱歉。