Скопируйте файл «Одна папка» в другую папку на Google Диске, используя список файлов из текстового файла. - PullRequest
1 голос
/ 12 октября 2019

У меня есть четыре папки: Основная папка, Папка 1, Папка 2, Текстовая папка

Я хочу скопировать некоторый файл из Main Folder в Folder 1 и Folder 2

. два текстовых файла внутри Text Folder скажем, Folder 1.txt и Folder 2.txt screnshot https://imgur.com/a/0Ov8RRq каждый файл содержит имя файла, которое доступно внутри Main Folder. теперь я хочу скрипт, который получит имя списка файлов из Folder 1.txt и скопирует в Folder 1 также имя списка файлов из Folder 2.txt и скопирует в Folder 2

вот мой текущий рабочий код

function copyfile(obj) {
  var source_folder = DriveApp.getFoldersByName(obj.sourceFolderName).next();
  var file = source_folder.getFilesByName(obj.filename);
  if (file.hasNext()) {
    var dest_folder = DriveApp.getFolderById(obj.destinationFolderId);
    var srcFile = file.next();
    var newName = srcFile.getName();
    srcFile.makeCopy(newName, dest_folder);
  }
}

// Please run this function.
function main() {
  // Please set this object.
  var object = [
    {filename: "filenames_value1", sourceFolderName: "sourceFolderName_value1", destinationFolderId: "destinationFolderId _value1"},
    {filename: "filenames_value2", sourceFolderName: "sourceFolderName_value2", destinationFolderId: "destinationFolderId _value2"}
  ];
  for (var i = 0; i < object.length; i++) {
    copyfile(object[i]);
  }
}

1 Ответ

2 голосов
/ 13 октября 2019

Копирование файлов в несколько мест назначения

function copyFiles() {
  var fA=[];
  var mainFolder=DriveApp.getFoldersByName('Main Folder').next();//assume one
  var textFolder=DriveApp.getFoldersByName('Text Folder').next();//assume one
  var files=textFolder.getFiles();
  while(files.hasNext()) {
    var file=files.next();
    var filename=file.getName();
    if(filename.match(/Folder\d{1,}\.txt/)) {
      var desFldrName="Folder" + filename.slice(6,-4)
      var fnA=file.getBlob().getDataAsString().split('\n');
      for(var i=0;i<fnA.length;i++) {
        fA.push({name:fnA[i],srcFolderId:mainFolder.getId(),desFolderName:desFldrName});
      }
    }
  }
  for(var i=0;i<fA.length;i++) {
    var srcFolder=DriveApp.getFolderById(fA[i].srcFolderId);
    var desFolder=DriveApp.getFoldersByName(fA[i].desFolderName).next();//assume one
    var fi=srcFolder.getFilesByName(fA[i].name).next();//assume one
    fi.makeCopy(fi.getName(),desFolder);
  }
}

Все папки назначения были пустыми до запуска сценария, и на изображениях ниже показаны результаты копирования. Также показано содержимое текстовых файлов, которые контролируют процесс копирования.

enter image description here

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