You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批量移动Google Docs文件自动转为PDF?为何无法保留原MIME类型?

解决Google Docs移动后变为PDF的问题

问题根源在于你用了createFile(file)方法处理Google原生文件(比如Docs、Sheets这类),这个方法默认会把文件导出成PDF格式,而不是移动原文件本身。要实现移动原文件到目标子文件夹,得用file.moveTo()方法替换createFile()。

修改后的完整代码如下:

function moveFilesToModifiedSubfolders() {
  var sourceFolderId = "source folder"; // 替换为你的源文件夹ID
  var destinationFolderId = "destination folder to be modified by sub"; // 替换为目标文件夹ID
  
  var sourceFolder = DriveApp.getFolderById(sourceFolderId);
  var destinationFolder = DriveApp.getFolderById(destinationFolderId);
  
  var files = sourceFolder.getFiles();
  
  while (files.hasNext()) {
    var file = files.next();
    var fileName = file.getName();
    var subfolderName = getSubfolderName(fileName);
    
    var subfolder = destinationFolder.getFoldersByName(subfolderName);
    if (subfolder.hasNext()) {
       // 移动原文件到已存在的子文件夹
       file.moveTo(subfolder.next());
    } else {
      // 创建新子文件夹后移动原文件
      var newSubfolder = destinationFolder.createFolder(subfolderName);
      file.moveTo(newSubfolder);
    }
  }
}

// 根据文件名生成匹配的子文件夹名称(此部分功能正常,无需修改)
function getSubfolderName(fileName) {
  var words = fileName.split(" ");
  if (words.length >= 2) {
    var modifiedName = words[1] + ", " + words[0];
    return modifiedName;
  } else {
    return fileName;
  }
}

关键改动说明:

  • 用file.moveTo(目标文件夹)替代createFile(file),这个方法会直接将原文件移动到目标文件夹,保留文件的原生格式(Google Docs/Slides/Sheets等)
  • 移动操作会把文件从源文件夹移除,如果需要保留源文件的副本,可以在移动前先调用file.makeCopy()创建副本,再移动副本。

内容的提问来源于stack exchange,提问作者David Neff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 03:14:57