You need to enable JavaScript to run this app. 如何用Google Apps Script把已创建的电子表格下载为xlsx或CSV格式
优惠活动
大模型
产品
解决方案
定价
更多

如何用Google Apps Script把已创建的电子表格下载为xlsx或CSV格式

Google Apps Script 创建的电子表格导出为本地xlsx/CSV格式的实现方案

你已经通过 const newDocument = SpreadsheetApp.create("docname"); 完成了云端电子表格的创建,要实现xlsx或CSV格式的本地下载,核心是通过Drive的导出能力生成带授权的可访问文件流,再触发浏览器下载流程,具体实现步骤如下:

核心导出链接构建逻辑

拿到已创建电子表格的文件ID后,可以直接拼接对应格式的导出接口地址:

  • xlsx格式导出地址:
    const fileId = newDocument.getId();
    const xlsxExportBaseUrl = `https://www.googleapis.com/drive/v3/files/${fileId}/export?mimeType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet&alt=media`;
    
  • CSV格式导出地址:
    注意:CSV格式仅支持单次导出单个工作表的内容,无法一次性导出多Sheet为单个CSV文件
    const csvExportBaseUrl = `https://www.googleapis.com/drive/v3/files/${fileId}/export?mimeType=text/csv&alt=media`;
    

触发本地下载的两种实现路径

Apps Script 本身无法在纯脚本运行环境下直接唤起浏览器的本地下载动作,需要根据使用场景选择对应的实现方式:

快速测试:生成临时授权下载链接

运行脚本时自动给导出链接加上当前账号的授权token,弹出链接供用户点击,点击后即可直接触发对应格式的文件下载:

function generateDownloadLink() {
  const newDocument = SpreadsheetApp.create("docname");
  const fileId = newDocument.getId();
  // 获取当前登录用户的临时授权token
  const authToken = ScriptApp.getOAuthToken();
  // 拼接带权限的xlsx下载链接
  const fullXlsxLink = `https://www.googleapis.com/drive/v3/files/${fileId}/export?mimeType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet&alt=media&access_token=${authToken}`;
  // 在表格界面弹出提示,展示可点击的下载链接
  SpreadsheetApp.getUi().alert(`文件已创建,点击下载xlsx文件:${fullXlsxLink}`);
}

注意:该临时链接仅对当前登录的Google账号有效,有效期约1小时,不可泄露给未授权用户

正式使用:部署Web应用实现一键自动下载

如果需要实现用户打开页面就自动触发下载的体验,可以将脚本部署为Web应用,结合前端逻辑自动完成下载流程:

  1. 先在脚本项目的“高级服务”中开启 Drive API 权限
  2. 编写对应服务端和前端逻辑:
// 服务端方法:获取指定格式的文件Blob对象
function getFileBlob() {
  const newDocument = SpreadsheetApp.create("docname");
  const fileId = newDocument.getId();
  // 以xlsx格式拉取文件内容,需要导出CSV格式时替换mimeType为text/csv即可
  const fileBlob = Drive.Files.get(fileId, {
    alt: "media",
    mimeType: MimeType.MICROSOFT_EXCEL
  }).getBlob();
  fileBlob.setName("docname.xlsx");
  return fileBlob;
}

// Web应用入口
function doGet() {
  return HtmlService.createHtmlOutput(`
    <script>
      // 页面加载完成后自动获取文件流,触发下载
      window.addEventListener('load', () => {
        google.script.run.withSuccessHandler((blob) => {
          const blobUrl = URL.createObjectURL(blob);
          const downloadAnchor = document.createElement('a');
          downloadAnchor.href = blobUrl;
          downloadAnchor.download = 'docname.xlsx';
          downloadAnchor.click();
          URL.revokeObjectURL(blobUrl);
        }).getFileBlob();
      })
    </script>
  `);
}

常见注意事项

  • 未开启Drive API高级服务时,调用Drive.Files相关方法会报权限错误,需要先在脚本编辑器的“项目设置-高级服务”中完成启用
  • 导出CSV格式时如果需要覆盖所有工作表内容,需要逐表拉取内容拼接后再生成对应的CSV文件流
  • 带授权token的导出链接不要嵌入公开可访问的页面,避免非授权用户访问到你的文件内容

内容的提问来源于stack exchange,提问作者Nane Petrosyan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.05 09:57:00