将 docx 文件转换为 Google 文档并放在同一文件夹中

Convert docx file to Google Docs and place in same folder

我需要转换文件夹内的 docx 文件,并将创建的 GDocs 文件放在 .docx 旁边,名称相同,但不带 .docx 扩展名

我不想使用 folder.addFile(doc);DriveApp.getRootFolder().removeFile(doc) 因为它是一种开销,我想将文件放在文件夹本身而不是在根目录中创建转换后的文件然后将其移动到 docx 之外。

我试过

function myFunction() {
  var docx = DriveApp.getFilesByName('Dummy.docx').next();
  var newDoc = Drive.newFile();
  var blob =docx.getBlob();
  var file=Drive.Files.insert(newDoc,blob,{convert:true});
  DocumentApp.openById(file.id).setName(docx.getName());  
}

您可以使用 metadata:

指定应在其中创建文件的文件夹
function myFunction() {
  // Set target Folder
  var folderID = 'FOLDER_ID';
  
  // Get .docx based on its name
  var docx = DriveApp.getFolderById(folderID).getFilesByName('Dummy.docx').next();
  
  // Specify file name and parent folder
  var fileMetadata = {
    title: docx.getName(),
    parents: [{id: folderID}]
  };
  
  // Convert .docx to Docs
  Drive.Files.insert(fileMetadata, docx.getBlob(), {convert:true});
  
  // Send .docx to Trash
  docx.setTrashed(true);
}

为此,您需要启用云端硬盘高级服务:https://developers.google.com/apps-script/advanced/drive

我相信你的目标如下。

  • 您想将 DOCX 文件转换为 Google 文档。
  • 您想将转换后的 Google 文档放到与 DOCX 文件相同的文件夹中。
  • 您想通过删除 DOCS 文件的文件名扩展名来设置 Google 文档的文件名。

修改点:

  • 在这种情况下,我建议使用驱动器API的“文件:复制”的方法。至此,转换后的Google文档自动重命名为不带扩展名.docx的文件名。并且,转换后的 Google 文档与 DOCX 文件放在同一文件夹中。我认为这种情况可能适合实现您的目标。

当你的脚本修改后,变成如下。

修改后的脚本:

在你再次使用它之前,please confirm whether Drive API is enabled at Advanced Google services

function myFunction() {
  var file = DriveApp.getFilesByName('Dummy.docx');
  if (!file.hasNext()) return;
  var document = Drive.Files.copy({}, file.next().getId(), {convert: true});
  var doc = DocumentApp.openById(document.id);
}

参考: