Czy mogę zduplikować folder na Dysku Google?

44

Muszę duplikować cały folder na Dysku Google raz w tygodniu. W folderze znajduje się około 25 plików. Jak to łatwo zrobić?

Koleś2012
źródło
Zakładam, że z interfejsu internetowego. Byłoby to akademickie, jeśli używasz klienta i synchronizujesz z folderem na komputerze.
ale
czy chcesz po prostu wykonać kopię zapasową tego folderu? lub próbujesz dodać go do innego konta Google? Czy potrzebujesz całej zawartości folderu, czy tylko wskaźniki?
William
Musiałem go zduplikować, ponieważ chcę mieć do nich różne uprawnienia, w tym celu muszę mieć oddzielne środowiska. Ale korzystanie z Google Drive na PC działało dobrze!
Dude2012
Skopiuj wtyczkę do folderu Chrome: chrome.google.com/webstore/detail/copy-folder/…
Simon Woodside

Odpowiedzi:

19

Jeśli korzystasz z aplikacji Dysk Google na komputerze, możesz skopiować i wkleić folder w katalogu Dysk Google, a to go skopiuje. Nie wierzę, że można to zrobić z poziomu aplikacji internetowej.

ComputerLocus
źródło
4
Niestety dla użytkowników Linuksa, do dzisiaj Google nie obsługuje „Dysku Google”. Dlatego muszą użyć czegoś o nazwie „ grive
iammilind
Czy ponownie załaduje cały nowy folder do sieci, czy wie, że zawartość folderu jest identyczna i powiela go bez pełnego ponownego przesłania?
Julian
@Julian Zakładam, że to wszystko ponownie ładuje.
ComputerLocus
Właśnie potwierdziłem, że rzeczywiście ponownie ładuje wszystkie pliki. Porażka.
Julian
bez aplikacji można także kliknąć prawym przyciskiem myszy - pobierz folder jako zip i ponownie go
załaduj
10

Napisałem skrypt aplikacji, aby rozwiązać ten problem. Możesz skopiować dowolną zawartość folderu oraz zawartą w nim strukturę. Skrypt pomoże wyeliminować potrzebę korzystania z aplikacji komputerowej Dysk Google. Dodając wyzwalacze, możesz nawet zautomatyzować proces.

Skopiuj strukturę folderów / skrypt treści GDrive

Skopiuj strukturę folderów na Dysku Google

Proszę zanotować :

  • dodaje to również przyrostek _copydo wszystkich podfolderów
  • folder_you_want_copied_copyJest w najwyższej hierarchii dominującego Dysku Google, więc jeśli kopiowane podfolder z dysku, to bańka aż do najwyższego poziomu, gdy kopiowany
Shunmugh Sundaram
źródło
Super fajna funkcja, doskonale działająca nawet w przypadku bardzo dużych folderów z setkami podfolderów i tysiącami plików (niektóre były bardzo duże). Dziękuję Shunmugh!
kubusz
3
dodaje także przyrostek „_copy” do wszystkich podfolderów, tak!
manas
5

Jeśli korzystasz z interfejsu internetowego Dysku Google ...

  1. Utwórz nowy folder i nazwij go tak, jak chcesz.

  2. Przejdź do istniejącego folderu, wybierz wszystkie pliki, kliknij prawym przyciskiem myszy i naciśnij kopiuj.

  3. Wybierz wszystkie kopie, kliknij prawym przyciskiem myszy i naciśnij przenieś do. Wybierz nowy folder.

Pamiętaj, że ta metoda nie będzie działać, jeśli folder, który chcesz skopiować, ma podfoldery.

Brandon
źródło
4
W menu po kliknięciu prawym przyciskiem myszy nie ma opcji „kopiuj”. Istnieje „wykonaj kopię”. Masz na myśli: zrób kopię wszystkich plików, następnie zaznacz kopie i przenieś je do nowego folderu.
Blisterpeanuts,
Należy także zmienić nazwę wszystkich plików po przeniesieniu ich do nowego folderu, aby usunąć prefiks „Kopia”.
Tom
Powoduje to, że wszystkie pliki mają przedrostek „Kopia” w nazwach plików.
Elijah Lynn
@Blisterpeanuts Nie ma też opcji „wykonaj kopię”, jeśli chcesz skopiować folder - nawet jeśli jest pusty. Irytujące, jeśli chcesz zacząć od szablonu z pustymi nazwami katalogów
Michael
Jeśli przeniesiesz grupę plików metodą przeciągnij i upuść podczas naciskania klawisza Ctrl, pojawi się znak „+” obok wskaźnika myszy i wydaje się, że działa, ale „skopiowane” pliki to tylko linki dowiązane , mają ten sam identyfikator, a jeśli je usuniesz, zostaną usunięte zarówno ta kopia, jak i oryginalny plik , które muszą zostać przywrócone z ostatniej aktywności. AFAIK to błąd na Dysku Google.
Pablo A
3

Bardzo późna odpowiedź na OP, i myślę, że nawet nie jest to możliwe w chwili zapytania, ale to właśnie robię dzisiaj:

  1. Wybierz folder, który chcę powielić.
  2. Kliknij go jeszcze raz, a następnie z menu podręcznego wybierz „Pobierz”
  3. Poproś moją przeglądarkę o zapisanie spakowanego archiwum w katalogu tymczasowym
  4. Wyodrębnij folder z archiwum i nadaj mu nową nazwę
  5. Powrót na dysk; kliknij duży niebieski przycisk Nowy i wybierz „Prześlij folder” z menu rozwijanego.
  6. Z powrotem w moim komputerze; chwyć nowo nazwany folder i przeciągnij go z powrotem na Dysk.
  7. Spuść wodę

Uwaga: Jest to rozwiązanie, gdy masz dużo małych plików i podfolderów, które razem tworzą niewielki skompresowany plik. Przydatność maleje wraz ze wzrostem całkowitego rozmiaru skompresowanego pliku.

Martin Bramwell
źródło
1
Głównym problemem tego rozwiązania - poza oczywistą potrzebą wystarczającej ilości miejsca do przechowywania całej zawartości dysku lokalnie, dwukrotnie (zarówno skompresowanej, jak i rozpakowanej) - jest to, że jeśli wyeksportuje wszystkie dokumenty Google do odpowiedniego formatu dokumentu MS OpenOffice, a następnie po ponownym załadowaniu musisz przekonwertować je z powrotem na formaty Google i rozwiązać wszystkie problemy z formatowaniem, które to powoduje.
Guss
3

Wolę powstrzymać się od umożliwienia stronom trzecim dostępu do mojego Dysku, chyba że muszę, tak jak Lucky 711 , napisałem własny skrypt. Zostawiam to tutaj dla przyszłych poszukiwaczy przygód Google. Skopiuje folder i całą jego zawartość. Dla mojego przypadku użycia napisałem go do obsługi plików z wieloma rodzicami, po prostu dodając skopiowany folder jako nowego rodzica. Jeśli nie chcesz tego, upuść część „Policz rodziców, którzy nie są tym rodzicem”.

function copyFolderAndContentsToFolder(folderToCopyId, newParentFolderId, newFolderName) {

  var folderToCopy = DriveApp.getFolderById(folderToCopyId);
  var newParentFolder = DriveApp.getFolderById(newParentFolderId);

  // Create the copy of the folder
  var newFolder = newParentFolder.createFolder(newFolderName);

  // Copy all the files in that folder
  var files = folderToCopy.getFiles();
  while (files.hasNext()) {
    var file = files.next();

    // Count the parents that aren't this parent
    var countOfOtherParents = 0;
    var parents = file.getParents();
    while (parents.hasNext()) {
      var parent = parents.next();
      if (parent.getId() !== folderToCopyId) { countOfOtherParents++; }
    }

    // If it's unique, then copy it. Otherwise, just add it to the new parent.
    if (countOfOtherParents == 0) {
      file.makeCopy(file.getName(),newFolder);
    } else {
      newFolder.addFile(file);
    }

  }

  // Copy all the subfolders in that folder
  var folders = folderToCopy.getFolders();
  while (folders.hasNext()) {
    var folder = folders.next();
    copyFolderAndContentsToFolder(folder.getId(), newFolder.getId(), folder.getName());
  }

}

Na przykład, jeśli chcesz tworzyć nowe kopie plików z wieloma rodzicami, a nie tylko dodawać nowy folder jako inny rodzic, krótszy kod wyglądałby następująco:

function copyFolderAndContentsToFolder(folderToCopyId, newParentFolderId, newFolderName) {

  var folderToCopy = DriveApp.getFolderById(folderToCopyId);
  var newParentFolder = DriveApp.getFolderById(newParentFolderId);

  // Create the copy of the folder
  var newFolder = newParentFolder.createFolder(newFolderName);

  // Copy all the files in that folder
  var files = folderToCopy.getFiles();
  while (files.hasNext()) {
    var file = files.next();
    file.makeCopy(file.getName(),newFolder);
  }

  // Copy all the subfolders in that folder
  var folders = folderToCopy.getFolders();
  while (folders.hasNext()) {
    var folder = folders.next();
    copyFolderAndContentsToFolder(folder.getId(), newFolder.getId(), folder.getName());
  }

}
Inżynier Toast
źródło
Jak uruchomić ten skrypt? Lub, jak uzyskać parametry wejściowe?
roydukkey
Wprowadzane dane to identyfikator folderu, który chcesz skopiować, identyfikator folderu, w którym chcesz utworzyć kopię, oraz nazwa, którą chcesz mieć. Aby uzyskać identyfikator folderu, przejdź do niego i spójrz na koniec adresu URL. Prawdopodobnie jest to coś takiego, 1jVlkj------------------------Gk3D7z wyjątkiem tego, że wszystkie myślniki są postaciami. Ten bełkotliwy ciąg jest unikalnym identyfikatorem przypisanym przez Google. Gdy masz już trzy wejścia, możesz wywołać tę funkcję z innej funkcji z czymś w rodzajucopyFolderAndContentsToFolder('superLongIdString','anotherLongIdString','NewFolderName')
Engineer Toast,
Jest to prawie idealne, ale w moim przypadku mam pliki, które są połączone z różnymi folderami. Zamiast kopiować plik, po prostu kopiuje link.
roydukkey
Jeśli masz na myśli pliki, które istnieją w wielu lokalizacjach (tj. Mają wielu rodziców), jest to adresowane w poście. Możesz skopiować countOfOtherParents++;tylko linię i to wystarczy. W moim przypadku jawnie chciałem, aby te pliki po prostu otrzymały innego rodzica, niż tworzyć nową kopię pliku. Jeśli masz na myśli pliki, które działają jak hiperłącza otwierające inne foldery, to nie wiedziałem, że możesz to zrobić.
Inżynier Toast
IE, minimalna zmiana byłaby taka, ale kod „czystszy” byłby taki
Engineer Toast
3

Możesz użyć dodatku „ Kopiuj folder ” dla Arkuszy kalkulacyjnych Google:

  1. utwórz arkusz kalkulacyjny Google
  2. kliknij Add-ons > Get add-onsi dodaj dodatek „Kopiuj folder”
  3. wybierz folder, który chcesz skopiować
  4. gotowy

Zobacz samouczek wideo .

Lub, ten chromowany sklep internetowy Google App Script może być wykorzystany do osiągnięcia tego wyniku. Ten nie wymaga utworzenia arkusza kalkulacyjnego Google.

abbood
źródło
7
Wymaga to umożliwienia dodatkowi „Wyświetl i przeczytaj swój e-mail”
Michael Cole,
@MichaelCole, a także inne problematyczne uprawnienia: zarządzanie arkuszami kalkulacyjnymi, ładowanie dowolnych stron internetowych, a co gorsza: dostęp offline. Nie polecam nikomu instalować tego, dopóki nie zostaną rozwiązane problemy z uprawnieniami.
Guss
Ach .. to odważny Nowy post Cambridge analytica, w którym teraz
żyjemy
Zarządzaj arkuszami kalkulacyjnymi, aby dodać plik dziennika arkusza kalkulacyjnego podczas jego działania.
Ajay
@Ajay To było moje złe. Dziękujemy za ponowne przesłanie.
jonsca
1

Korzystam z wielu komputerów i nie chcę umieszczać na nich aplikacji napędowej, dlatego napisałem poniższy skrypt do skopiowania na stronie. Jest brzydki i podstawowy, ale działa. Kopiuje tylko folder i jego pliki, a nie podfoldery. Jestem pewien, że jest miejsce na ulepszenia, więc nie krępuj się i weź to i popraw, ale mam nadzieję, że przynajmniej pomoże od samego początku.

Zgodnie z komentarzem poniżej jest to skrypt Google Apps. Aby go użyć, otwórz aplikację skryptową Google, a następnie skopiuj i wklej cały kod do pustego skryptu. Następnie kliknij opcję publikowania w menu, a następnie wybierz wdróż jako aplikację internetową. Następnie możesz kliknąć link Najnowszy kod lub skopiować i wkleić adres URL do przeglądarki. Następnie znajdziesz pole, w którym możesz wpisać folder, który chcesz skopiować, oraz przycisk kopiowania. To powinno utworzyć kopię folderu, który nazwałeś, oraz kopię wszystkich plików w nim zawartych.

Uwaga: nie będzie kopiować podfolderów, tylko pliki.

function doGet()
{
  // Build UI
  // Create UI object
  var copyUI = UiApp.createApplication();
  // Create Input box referenced later by the name explicitly set below
  var userInput = copyUI.createTextBox().setName("textbox1");
  //create button
  var enterButton = copyUI.createButton("copy");
  // add all objects to UI object
  copyUI.add(userInput).add(enterButton);

  //Create clicke event handeler and add input field to handeler
  var clickHandler = copyUI.createServerHandler('onClick')
  .addCallbackElement(userInput);

  // add handelrer to the copy button
  enterButton.addClickHandler(clickHandler);

  // instantiate GUI
  return copyUI;
}


function onClick(e)
{
  // call currently active application/gui
  var app = UiApp.getActiveApplication();

  //Pass in the value of the e paramater named 'textbox1'
  var input = e.parameter.textbox1;

  // log value passed in from user input
  //Logger.log(input);

  // perform file copy
  CopyFile(input);
}


function CopyFile(filename)
{
  // declaire variables
  var newFolder_String;
  var newFolder;
  var originalFolder;
  var fileArray;
  var loopCount;
  var arrayLength;
  var newFile;
  // get original folder id
  originalFolder = DocsList.getFolder(filename);
  Logger.log(originalFolder.getId());


  // create new "copy" folder using: createFolder(<filename>_copy)
  newFolder_String = filename + "_Copy";
  Logger.log(newFolder_String);
  newFolder = DocsList.createFolder(newFolder_String);

  // get folders and files from original file using: 
    //   getFiles() from original file into an array
  fileArray = originalFolder.getFiles();

  // Copy files into folder:
  arrayLength = fileArray.length;
  loopCount = 0;

  // looping through array of file
  for (loopCount = 0; loopCount < arrayLength; loopCount++)
  {
    // create file copies using: file[i].makeCopy() and newFile.addToFolder(CopyFolder)
    newFile = fileArray[loopCount].makeCopy();
    Logger.log(newFile.getName());
    newFile.addToFolder(newFolder)
  }

}
Lucky 711
źródło
-1

Aby powielić folder, przeciągnij go i upuść w innym folderze, przytrzymując przycisk CTRL.

aborruso
źródło
9
To się nie powiela; po prostu tworzy wskaźnik. Przetestowałem to, wykonując Ctrl-przeciągnij-i-upuść folder do kilku różnych miejsc, a następnie utworzyłem plik w folderze, a plik jest widoczny w każdym miejscu.
ale
Zgadza się. Nazywają to „dodawaniem folderu”
th3an0maly
4
-1, nie działa.
Pacerier