我有一个包含多张纸的工作簿。我已经对其进行了设置,以便您可以在主页上单击工作表名称旁边的导出,并将其导出到xls。是否可以导出工作表并将其另存为工作表名称而不是工作簿名称?
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中,我具有工作表ID。
这就是生成URL的原因
=HYPERLINK(CONCATENATE($A$49,D32),"Export")
答案 0 :(得分:1)
我没有使用URL的功能,因为您必须捕获新文档并更改名称。
我能做的是创建一个脚本函数,该脚本函数将使用工作表名称创建一个新文件,但是它将使用指定的文件夹ID将其存储在您的云端硬盘中,然后它将使用新的ID文件,它将创建一个URL,该URL将添加到A1:A1单元中,以便您下载具有工作表名称的新文档。 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的高手,但我可以使它发挥作用。希望这对您有所帮助,如果您不希望将文件发送到垃圾箱,只需从实用程序和setTrashed中删除两行即可。您可以保留文档,以便以后再从“垃圾箱”中删除它们,以避免使用驱动器空间,我找不到能够永久删除文件的方法,只是removeFile(),但这只是从驱动器中删除文件,显然它将仍然使用云端硬盘空间。
问候。