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

解决Google Drive中50MB+多工作表XLSX转Google Sheets的大小超限报错

大体积XLSX转Google Sheets解决方案(超50MB文件适用)

方案一:直接解析XLSX内容写入Google Sheets(绕过Drive转换限制)

利用XLSX解析库直接读取Google Drive中XLSX文件的内容,逐工作表写入新建的Google Sheets,无需依赖Drive的文件转换API,从而避开50MB的转换限制。

实现步骤:

  1. 在Google Apps Script编辑器中,点击「资源」>「库」,添加SheetJS库(项目ID:1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0),选择最新版本。
  2. 启用Drive高级服务:点击「服务」>「添加服务」,找到「Drive API」并启用。
  3. 运行以下脚本:
function convertLargeXLSXtoGoogleSheets() {
  // 替换为你的大XLSX文件ID
  const excelFileId = "YOUR_XLSX_FILE_ID";
  // 替换为目标文件夹ID(可选,不填则存在根目录)
  const targetFolderId = "YOUR_TARGET_FOLDER_ID";

  // 获取XLSX文件的Blob
  const file = DriveApp.getFileById(excelFileId);
  const blob = file.getBlob();
  const data = blob.getBytes();

  // 用SheetJS解析XLSX
  const workbook = XLSX.read(data, { type: 'array' });

  // 创建新的Google Sheets文件
  let newSpreadsheet;
  if (targetFolderId) {
    const folder = DriveApp.getFolderById(targetFolderId);
    newSpreadsheet = SpreadsheetApp.create(file.getName().replace('.xlsx', ''), 1, 1, folder);
  } else {
    newSpreadsheet = SpreadsheetApp.create(file.getName().replace('.xlsx', ''));
  }

  // 遍历每个工作表,写入数据
  workbook.SheetNames.forEach(sheetName => {
    const worksheet = workbook.Sheets[sheetName];
    // 将工作表内容转换为二维数组
    const sheetData = XLSX.utils.sheet_to_json(worksheet, { header: 1 });
    
    // 创建新工作表
    const newSheet = newSpreadsheet.insertSheet(sheetName);
    // 写入数据(数据量极大时分批次写入避免超时)
    if (sheetData.length > 0) {
      newSheet.getRange(1, 1, sheetData.length, sheetData[0].length).setValues(sheetData);
    }
  });

  // 删除默认创建的第一个空白工作表
  const defaultSheet = newSpreadsheet.getSheetByName('Sheet1');
  if (defaultSheet) newSpreadsheet.deleteSheet(defaultSheet);

  Logger.log(`转换完成,新表格ID:${newSpreadsheet.getId()}`);
}

注意事项:

  • 若XLSX文件包含百万级行数据,需将数据分批次写入(比如每10000行写入一次),避免Google Apps Script的6分钟执行超时限制。
  • SheetJS库支持多数XLSX格式,但复杂公式或宏可能无法完全兼容,需提前测试。

方案二:拆分XLSX后分批转换

如果不想引入第三方库,可先将大XLSX拆分为多个小于50MB的子文件,再用你现有代码分别转换,最后合并到同一Google Sheets中。

实现思路:

  1. 本地用Excel或Python脚本(如pandas)将大XLSX按工作表或行拆分为多个小XLSX文件。
  2. 将拆分后的小文件上传到Google Drive。
  3. 修改现有脚本,遍历所有小XLSX文件逐个转换,再将转换后的工作表复制到目标主表格。

合并转换结果的示例脚本:

function mergeConvertedSheets() {
  // 替换为存放拆分后XLSX转换结果的文件夹ID
  const convertedFolderId = "YOUR_CONVERTED_FOLDER_ID";
  // 目标主表格ID
  const targetSpreadsheetId = "YOUR_TARGET_SPREADSHEET_ID";
  const targetSpreadsheet = SpreadsheetApp.openById(targetSpreadsheetId);

  const folder = DriveApp.getFolderById(convertedFolderId);
  const files = folder.getFilesByType(MimeType.GOOGLE_SHEETS);

  while (files.hasNext()) {
    const sheetFile = files.next();
    const sourceSpreadsheet = SpreadsheetApp.openById(sheetFile.getId());
    // 遍历源表格的所有工作表并复制到目标表格
    sourceSpreadsheet.getSheets().forEach(sheet => {
      sheet.copyTo(targetSpreadsheet);
    });
  }

  Logger.log("合并完成");
}

方案三:Google Workspace企业账户批量转换

若使用Google Workspace企业版,可联系管理员启用批量文件转换功能,该功能支持更大体积的文件转换,无需编写复杂脚本。


内容的提问来源于stack exchange,提问作者jayesh patel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:45:35