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

无法将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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 08:47:34