我目前在 Google Sheet 中有一个 Google App 脚本,它为我提供了文件夹的 URL,然后我可以用它来下载。虽然这是一个额外的步骤,但我想删除它,并直接获取压缩内容的 URL。
这是我的代码(谷歌应用程序脚本):
function downloadSelectedScripts() {
// ...
var scriptFiles = getScriptFiles(scriptFileNames)
var tempFolder = copyFilesToTempFolder(scriptFiles)
Browser.msgBox(tempFolder.getUrl())
}
function copyFilesToTempFolder(files) {
var tempFolder = DriveApp.getFolderById(FOLDERS.TEMP)
var tempSubFolder = tempFolder.createFolder('download_' + Date.now())
for (var i in files) {
var file = files[i]
file.makeCopy(file.getName(), tempSubFolder)
}
return tempSubFolder
}
- You want to compress all files in a folder as a zip file.
- 该文件夹没有子文件夹。
- 所有文件都只是文本文件。
- 所有文件的总大小小于 50 MB。
- 您想要检索用于下载 zip 文件的 URL。
如果我的理解是正确的,那么这个示例脚本怎么样?该脚本的流程如下。
- 检索文件夹。
- 检索文件夹中所有文件的 blob。
- 压缩 blob 并检索 zip 的 blob。
- 创建 zip blob 作为文件。
- 检索 URL 以进行下载。
示例脚本:
使用此脚本时,请设置要压缩的文件夹的文件夹ID。
function myFunction() {
var folderId = "###"; // Please set the folder ID here.
var folder = DriveApp.getFolderById(folderId);
var files = folder.getFiles();
var blobs = [];
while (files.hasNext()) {
blobs.push(files.next().getBlob());
}
var zipBlob = Utilities.zip(blobs, folder.getName() + ".zip");
var fileId = DriveApp.createFile(zipBlob).getId();
var url = "https://drive.google.com/uc?export=download&id=" + fileId;
Logger.log(url);
}
Result:
返回 zip 文件的直接链接如下。
https://drive.google.com/uc?export=download&id=###
Note:
- 遗憾的是,在现阶段,文件夹无法通过 Google Apps 脚本包含在 zip 数据中。
- 在此示例脚本中,zip 文件的文件名是文件夹名称。所以请根据您的情况进行修改。
- 如果您想在不登录 Google 的情况下下载 zip 文件,请共享该文件。
参考:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)