我不能通过使用 URL 来完成,因为您必须捕获新文档并更改名称。
我能够做的是创建一个脚本函数,该函数将使用工作表的名称创建一个新文件,但它将使用指定的文件夹 ID 将其存储在您的驱动器中,然后它将获取新文件的 id 和它将创建一个将添加到 A1:A1 单元格的 url,供您下载具有工作表名称的新文档。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 Script 的大师,但我能够让它发挥作用。我希望这会有所帮助,如果您不希望将文件发送到垃圾箱,只需从实用程序中删除 2 行和 setTrashed 行。您可以保留文件以便以后从垃圾箱中删除它们以避免使用您的驱动器空间,我无法找到一种方法可以永久删除文件,只是 removeFile() 但这只是从驱动器中删除文件,显然它会仍然使用驱动器空间。
问候。