批量移动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
相关产品推荐
相关产品推荐

