如何通过Google Apps Script或Drive API将谷歌表格导出为旧版XLS格式?
谷歌表格导出为旧版XLS格式的实现方案
问题场景
需要通过Google Apps Script或Google Drive API直接将谷歌表格导出为旧版XLS格式(适配老旧应用),目前已掌握XLSX导出方法:
var url = file.exportLinks[MimeType.MICROSOFT_EXCEL]; // 导出XLSX格式
但以下两种尝试均失败:
- 调用旧版MIME类型导出:
var url = file.exportLinks['application/vnd.ms-excel'];
返回undefined,该导出方式已被官方弃用。
2. 直接访问导出链接:
https://docs.google.com/spreadsheets/export?exportFormat=xls&id=[MY_FILE_ID]
无法打开目标文件,此格式导出路径已失效。
可行实现方案
由于Google官方已停止支持直接导出XLS格式,可通过脚本内自动转换完成需求,无需手动借助第三方工具:
步骤1:引入SheetJS转换库
打开你的Google Apps Script项目,依次点击「资源」→「库」,输入库ID 1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0,选择最新版本,将库命名为XLSX并添加。
步骤2:编写完整转换脚本
function exportSheetToXLS(fileId) { // 1. 导出谷歌表格为XLSX格式Blob var targetFile = DriveApp.getFileById(fileId); var xlsxBlob = targetFile.getAs(MimeType.MICROSOFT_EXCEL); // 2. 使用SheetJS将XLSX转换为XLS格式 var xlsxData = XLSX.read(xlsxBlob.getDataAsString(), {type: 'binary'}); var xlsBinary = XLSX.write(xlsxData, {bookType:'xls', type:'binary'}); var xlsBlob = Utilities.newBlob(xlsBinary, 'application/vnd.ms-excel', targetFile.getName() + '.xls'); // 3. 将生成的XLS文件保存到Google Drive DriveApp.createFile(xlsBlob); }
权限配置
确保你的Apps Script项目已启用Drive API权限:
- 点击「项目设置」,勾选「显示"appsscript.json"清单文件」。
- 打开
appsscript.json,在oauthScopes数组中添加:
"https://www.googleapis.com/auth/drive"
注意事项
- 转换后的XLS文件兼容旧版Office应用,无需额外格式调整。
- 若表格包含复杂公式或样式,转换后可能存在细微差异,需提前测试验证。
内容的提问来源于stack exchange,提问作者Andrew Roberts
相关产品推荐
相关产品推荐

