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

GAS导出CSV时自定义文件名问题求助

如何自定义Google Sheets导出CSV的文件名?

我有一段可正常运行的Google Apps Script代码,能生成CSV格式的工作表下载链接,但文件默认以对应工作表标签名命名(如Sheet1.csv)。我希望自定义文件名(如mytestfile.csv),尝试在URL中添加title参数但无效,求解决方法。

原工作代码

function download_CSV() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var ssID = ss.getId();
  var sheetId = SpreadsheetApp.getActive().getSheetByName('Kitchen Doors Feed').getSheetId();

  var csv_format = "https://docs.google.com/spreadsheets/d/"+ssID+"/export"+
                                        "?format=csv&"+
                                        "=csv&"+
                                        "gid="+sheetId+"";
  
  Logger.log(csv_format)
  return [csv_format];
}

添加title参数后的代码

function download_CSV() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var ssID = ss.getId();
  var sheetId = SpreadsheetApp.getActive().getSheetByName('Kitchen Doors Feed').getSheetId();

  var csv_format = "https://docs.google.com/spreadsheets/d/"+ssID+"/export"+
                                        "?format=csv&"+
                                        "=csv&"+
                                        "title=filename&"+
                                        "gid="+sheetId+"";
  
  Logger.log(csv_format)
  return [csv_format];
}

问题原因

Google Sheets官方的export接口并不支持通过title参数指定下载文件名,这个参数不会被服务端识别,所以添加后没有效果。

解决方案

方案一:通过Web App返回CSV并指定文件名

直接在GAS中生成CSV内容,发布为Web App,通过响应头设置自定义文件名:

function doGet(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Kitchen Doors Feed');
  var data = sheet.getDataRange().getValues();
  
  // 将表格数据转为CSV格式
  var csvContent = data.map(row => row.join(',')).join('\n');
  
  // 配置响应内容,指定文件名
  var output = ContentService.createTextOutput(csvContent);
  output.setMimeType(ContentService.MimeType.CSV);
  output.downloadAsFile('mytestfile.csv'); // 这里替换成你想要的文件名
  
  return output;
}

操作步骤:

  1. 点击编辑器顶部的「部署」→「新部署」
  2. 类型选择「Web应用」,权限设置为「任何人,甚至匿名」(按需调整)
  3. 点击部署,复制生成的Web App链接,访问即可下载指定文件名的CSV

方案二:在客户端侧边栏处理下载(适合Sheet内使用)

如果是在Google Sheets的自定义界面中使用,可通过前端JS触发下载,直接指定文件名:

// 获取CSV内容的后端函数
function getCSVContent() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Kitchen Doors Feed');
  var data = sheet.getDataRange().getValues();
  return data.map(row => row.join(',')).join('\n');
}

// 显示下载侧边栏的函数
function showDownloadSidebar() {
  var html = HtmlService.createHtmlOutput(`
    <button style="padding: 8px 16px; cursor: pointer;" onclick="downloadCSV()">下载自定义文件名CSV</button>
    <script>
      function downloadCSV() {
        google.script.run.withSuccessHandler(csvContent => {
          // 创建CSV blob对象
          var blob = new Blob([csvContent], {type: 'text/csv'});
          var downloadUrl = URL.createObjectURL(blob);
          // 创建下载链接并触发点击
          var a = document.createElement('a');
          a.href = downloadUrl;
          a.download = 'mytestfile.csv'; // 自定义文件名
          a.click();
          // 释放URL资源
          URL.revokeObjectURL(downloadUrl);
        }).getCSVContent();
      }
    </script>
  `);
  SpreadsheetApp.getUi().showSidebar(html);
}

操作步骤:

  1. 运行showDownloadSidebar函数,Sheet右侧会弹出侧边栏
  2. 点击侧边栏的按钮,即可下载指定文件名的CSV

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 00:53:11