Скачать папку в виде Zip Google Drive API - PullRequest
0 голосов
/ 24 мая 2019

В настоящее время у меня есть Google App Script в Google Sheet, который дает мне URL-адрес папки, которую я затем могу использовать для загрузки. Хотя это дополнительный шаг, который я хотел бы удалить, и получить URL-адрес заархивированного содержимого напрямую.

Вот мой код (скрипт приложения Google):

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
}

1 Ответ

1 голос
/ 26 мая 2019
  • Вы хотите сжать все файлы в папке в виде zip-файла.
    • В папке нет вложенных папок.
    • Все файлы являются только текстовыми файлами.
    • Общий размер всех файлов составляет менее 50 МБ.
  • Вы хотите получить URL для загрузки zip-файла.

Если мое понимание верно, как насчет этого примера сценария? Процесс этого сценария выглядит следующим образом.

  1. Получить папку.
  2. Получение BLOB-объектов всех файлов в папке.
  3. Сжатие капель и извлечение капли почтового индекса.
  4. Создание почтового блоба в виде файла.
  5. Получить 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);
}

Результат:

Прямая ссылка на zip-файл возвращается следующим образом.

https://drive.google.com/uc?export=download&id=###

Примечание:

  • К сожалению, на данном этапе папки не могут быть включены в zip-данные с помощью Google Apps Script.
  • В этом примере сценария имя файла zip-файла - это имя папки. Поэтому, пожалуйста, измените его для вашей ситуации.
  • Если вы хотите загрузить zip-файл без входа в Google, поделитесь файлом.

Справка:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...