Ric*_*ael 5 export google-sheets google-apps-script
任务是自动执行通过菜单选项“文件|下载为|纯文本”完成的手动过程
我希望能够控制保存的文件名,这是无法通过菜单完成的。
调用此函数时,用户将坐在电子表格中的工作表上。最终,我将其作为菜单选项,但为了测试,我只是创建一个可以手动运行的函数。
在阅读了其他几个可能的技术主题后,这就是我想到的。
它为文件构建自定义名称,进行调用,响应代码为 200。
理想情况下,我想避免打开/保存对话框。换句话说,只需保存文件即可,无需额外的用户干预。我想保存在特定的文件夹中,并且我已经使用完整的文件规范进行了尝试,但结果是相同的。
如果我复制记录器中显示的 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());
}
Run Code Online (Sandbox Code Playgroud)
我已将电子表格以 CSV 格式直接导出到本地硬盘,如下所示:
使用本页教程中的函数 ConvertRangeToCsvFile_() 的变体从当前工作表获取 CSV 内容https://developers.google.com/apps-script/articles/docslist_tutorial#section3
var csvFile = convertRangeToCsvFile_(...);
Run Code Online (Sandbox Code Playgroud)然后选择使用 Drive 同步到本地计算机的驱动器文件夹
var localFolder = DocsList.getFolderById("055G...GM");
Run Code Online (Sandbox Code Playgroud)最后将CSV文件保存到“本地”文件夹中
localFolder.createFile("sample.csv", csvFile);
Run Code Online (Sandbox Code Playgroud)就是这样。
就可以进行下载了。但不是计算机的“写入硬盘”。
写入问题:您的意思是使用 Google Apps 脚本将文件写入计算机的硬盘驱动器?抱歉,您需要的不仅仅是 GAS 来完成此操作。出于安全原因,我怀疑仅使用 GAS 就可能实现这一点,在 GAS 中从未见过这样的事情。
Google Drive API 可以让您进行下载,只需要 OAuth 和您提供的 URL。
| 归档时间: |
|
| 查看次数: |
30433 次 |
| 最近记录: |