无法将Excel文件转换为Google Sheet,求助排查代码问题
问题分析与解决方案
你的代码出现转换错误的核心原因是:使用Drive.Files.insert上传Blob时,未明确启用格式转换参数,导致Google Drive API没有按照你指定的MimeType.GOOGLE_SHEETS执行转换,而是默认将XLS内容解析成了Google Docs。
修正方案一:给Drive.Files.insert添加convert: true参数
修改后的代码如下:
function readBlob() { var file = DriveApp.getFileById("1TOuJkIY7CezscRlXXXXyyyyKXU1F7D2nhm"); var fileInfo = { title: file.getName().replace(/\.xlsx?$/, ''), mimeType: MimeType.GOOGLE_SHEETS, parents: [{"id":"1jxNfqD7xqeCYuXXXyyy0M6FiTFsUw-yd"}], }; // 添加convert: true强制触发格式转换 var filex = Drive.Files.insert(fileInfo, file.getBlob(), {ocr: false, convert: true}); Logger.log(filex.mimeType); }
修正方案二:使用更可靠的Drive.Files.copy方法
直接基于原XLS文件复制并转换格式,无需处理Blob,逻辑更直观:
function convertXlsToSheets() { var sourceFile = DriveApp.getFileById("1TOuJkIY7CezscRlXXXXyyyyKXU1F7D2nhm"); var targetFolderId = "1jxNfqD7xqeCYuXXXyyy0M6FiTFsUw-yd"; var copyParams = { title: sourceFile.getName().replace(/\.xlsx?$/, ''), mimeType: MimeType.GOOGLE_SHEETS, parents: [{"id": targetFolderId}] }; var convertedFile = Drive.Files.copy(copyParams, sourceFile.getId()); Logger.log(convertedFile.mimeType); }
补充说明
Drive.Files.copy是专门用于文件格式转换的推荐方式,它直接基于原文件操作,避免了Blob处理可能带来的格式识别偏差。- 若坚持使用
Drive.Files.insert,convert: true是触发格式转换的必要参数,否则API只会根据Blob内容自动推断格式,容易出现错误映射。
内容的提问来源于stack exchange,提问作者Active Hub
相关产品推荐
相关产品推荐

