导出单个 sheet 并另存为 sheet 名称

Export Single sheet and save as sheet name

我有一个包含多个 sheet 的工作簿。我已将其设置为在主页上您可以单击 sheet 名称旁边的导出并将 sheet 导出到 xls。有没有办法导出 sheet 并将其另存为 sheet 名称而不是工作簿名称?

function getSheetUrl() {
  var SS = SpreadsheetApp.getActiveSpreadsheet();
  var ss = SS.getActiveSheet();
  var url = 'https://docs.google.com/a/d/spreadsheets/d/Sheet ID/';
  url += 'export?format=xlsx&gid=';
  url += ss.getSheetId(); 
  return url;
}

在A49我有:

https://docs.google.com/a/d.net/spreadsheets/d/SHEET ID/export?format=xlsx&gid=

然后在 D:D 我有 sheet ID

这就是生成 URL

的原因
=HYPERLINK(CONCATENATE($A,D32),"Export")

我不认为可以使用 URL 来完成,因为您必须捕获新文档并更改名称。

我能够做的是创建一个脚本函数,该函数将创建一个名为 sheet 的新文件,但它会将其存储在具有指定文件夹 ID 的驱动器中,然后它将获取新文件的 ID,它将创建一个 url,它将添加到 A1:A1 单元格中,供您下载名称为 sheet 的新文档。 1 分钟后文件将被发送到回收站。

function getSheetUrl() {
        var SS = SpreadsheetApp.getActiveSpreadsheet();
        var ss = SS.getActiveSheet();
        var url = 'https://docs.google.com/spreadsheets/d/SpreadsheetId/';
        url += 'export?format=xlsx&gid=';
        url += ss.getSheetId();
        var params = {
            method: "GET",
            headers: {
                "authorization": "Bearer " + ScriptApp.getOAuthToken()
            }
        };
        var response = UrlFetchApp.fetch(url, params).getBlob().setName(ss.getSheetName()).copyBlob();
        var dir = DriveApp.getFolderById("FolderId");
        var file = dir.createFile(response);
        var id = file.getId();
        ss.getRange("A1:A1").setValue("https://docs.google.com/uc?id=" + id + "&export=download");

  Utilities.sleep(60000);

        DriveApp.getFileById(id).setTrashed(true);
}

我不是 Apps 脚本专家,但我正是通过这种方式让它发挥作用的。我希望这会有所帮助,如果您不希望将文件发送到垃圾箱,只需从实用程序中删除两行和 setTrashed 一行。您可以保留文档以便稍后从回收站中删除它们以避免使用您的驱动器 Space,我无法找到一种方法来永久删除文件,只是 removeFile() 但这只是从驱动器中删除文件显然它仍将使用 Drive space。

你好。