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

如何不修改原Excel文件,用脚本将Google Drive内的Excel转为Google Sheets

Google Drive Excel文件转Google Sheets集成实现方案

你的集成思路完全可行,当前筛选流程已经遍历了所有符合条件的目标Excel文件,直接嵌入转换逻辑无需二次遍历,执行效率更高。

前置准备

首先需要在你的Apps Script项目中启用Drive API:

  • 打开脚本编辑器,点击左侧「服务」选项的「+」号
  • 在弹出的服务列表中找到「Drive API」,选择V3版本后添加即可

修改后的完整代码

function getChildFiles(parentName, parent, sheet) {
  // 筛选条件:符合名称要求的Excel文件
  var fileIter = parent.searchFiles("title contains 'completed'and title contains 'Verification Visit Direct Suppliers'and mimeType='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'"); 
  var output = [];
  var now = new Date();
  var date = new Date();
  var copy = new Date(date);

  // 可选:指定转换后的文件存储文件夹,不填则默认和源Excel同目录
  // var targetFolder = DriveApp.getFolderById('你的目标文件夹ID');

  while (fileIter.hasNext()) { 
    var file = fileIter.next();
    var fileName = file.getName();
    var fileType = file.getMimeType();
    var filecreatedate = file.getDateCreated();
    var fileUpdate = file.getLastUpdated();
    var path = parentName + ' |--> ' + fileName;
    var fileID = file.getId();
    var Url = 'https://drive.google.com/open?id=' + fileID;

    // ------------------- 新增转换逻辑开始 -------------------
    // 配置转换参数:指定转换为Google Sheets格式
    var convertConfig = {
      title: fileName.replace(/\.xlsx$/, '') + '(已转换)', // 转换后的文件名,可自定义
      mimeType: MimeType.GOOGLE_SHEETS
      // 若要指定存储到特定文件夹,加下面这行
      // parents: [targetFolder.getId()]
    };
    // 调用Drive API执行转换
    var convertedFile = Drive.Files.copy(convertConfig, fileID);
    // 拿到转换后的Google Sheets信息
    var convertedFileId = convertedFile.id;
    var convertedFileUrl = 'https://docs.google.com/spreadsheets/d/' + convertedFileId;
    // ------------------- 新增转换逻辑结束 -------------------

    // 输出新增两列:转换后文件ID、转换后文件链接,原7列变为9列
    output.push([fileID, fileName, path, Url, filecreatedate, fileUpdate, copy, convertedFileId, convertedFileUrl]);
    Logger.log(fileType);
  }

  if (output.length) {
    var last_row = sheet.getLastRow();
    // 注意范围列数从7改成9,对应新增的两列
    sheet.getRange(last_row + 1, 1, output.length, 9).setValues(output);
    SpreadsheetApp.flush();
  }

  var childFolders = parent.getFolders();
  while (childFolders.hasNext()) { 
    var childFolder = childFolders.next();
    var childFolderName = childFolder.getName();
    getChildFiles( parentName + ' |--> ' + childFolderName, childFolder, sheet);
  }
}

核心说明

  • 转换逻辑调用Drive V3 API的Files.copy方法,不需要手动下载上传,可直接在云端完成格式转换
  • 转换完成后返回的convertedFileId就是Google Sheets格式的文件ID,后续提取数据直接调用SpreadsheetApp.openById(convertedFileId)即可正常执行,不会再报错
  • 可选优化:如果需要避免重复转换,可以在转换前先查询目标目录下是否存在对应转换完成的文件,存在则直接复用已有ID跳过转换步骤

权限注意事项

脚本运行账号需要对源Excel文件所在目录、转换后文件存储目录拥有编辑权限,否则会触发权限报错。

内容的提问来源于stack exchange,提问作者Vishnu Kumaran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:54:04