google-apps-script – 如何通过Google Apps脚本在电子表格中下载/导出表格

任务是通过菜单选项“文件|下载为|纯文本”自动完成手动过程

我希望能够控制保存的文件名,这不能通过菜单完成.

在调用此时,用户将坐在电子表格中的工作表上.最终,我将它作为一个菜单选项,但是为了测试我只是创建一个我可以手动运行的功能.

在阅读了其他几个可能的技术线程之后,这就是我想出来的.

它为文件构建自定义名称,进行调用,响应代码为200.

理想情况下,我想避免打开/保存对话框.换句话说,只需保存文件而无需额外的用户干预.我想保存在一个特定的文件夹中,我已经尝试了完整的文件规范,但结果是一样的.

如果我复制Logger中显示的URL并将其粘贴到浏览器中,它会启动打开/保存对话框,以便字符串起作用.

这是代码作为一个函数.

function testExportSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var oSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var sId = ss.getId();
var ssID=sId + "&gid=" + oSheet.getSheetId();
var url = "https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key="
  + ssID + "&exportFormat=tsv"; 
Logger.log(url);
var fn =  ss.getName() + "-" + oSheet.getSheetName() + ".csv";
var sHeaders = {"Content-Disposition" : "attachment; filename=\"" + fn + "\""};
var sOptions = {"contentType" : "text/html", "headers" : sHeaders};
Logger.log(sOptions);

x = UrlFetchApp.fetch(url, sOptions)
Logger.log(x.getResponseCode());
}
最佳答案
我已将电子表格以CSV格式直接导出到本地硬盘中,如下所示:

>使用本页教程中的函数convertRangeToCsvFile_()的变体从当前工作表中获取CSV内容https://developers.google.com/apps-script/articles/docslist_tutorial#section3

var csvFile = convertRangeToCsvFile_(...);

>然后选择使用Drive同步到本地计算机的驱动器文件夹

var localFolder = DocsList.getFolderById("055G...GM");

>最后将CSV文件保存到“本地”文件夹中

localFolder.createFile("sample.csv", csvFile);

而已.

转载注明原文:google-apps-script – 如何通过Google Apps脚本在电子表格中下载/导出表格 - 代码日志