Posso duplicare una cartella in Google Drive?


44

Devo duplicare un'intera cartella sul mio Google Drive una volta alla settimana. Ci sono circa 25 file nella cartella. Qual è un modo semplice per farlo?


Dall'interfaccia web presumo. Questo sarebbe accademico se stai usando il client e la sincronizzazione con una cartella sul tuo PC.
Ale

vuoi fare il backup del materiale in quella cartella? o stai provando ad aggiungerlo a un altro account Google? Hai bisogno dell'intero contenuto della cartella o lo faranno solo i puntatori?
William,

Ho dovuto duplicarlo perché voglio avere permessi diversi su di loro, per questo, ho bisogno di ambienti separati. Ma l'utilizzo di Google Drive per PC ha funzionato bene!
Dude2012,

Risposte:


19

Se stai utilizzando l'applicazione Google Drive sul tuo PC, puoi copiare e incollare la cartella nella directory di Google Drive, e questo la copia. Non credo sia possibile farlo dall'applicazione Web.


4
Purtroppo per gli utenti Linux, fino ad oggi Google non ha supporto per "Google Drive Application". Quindi hanno bisogno di usare qualcosa chiamato " grive "
iammilind

Ricaricherà l'intera nuova cartella sul Web o sa che il contenuto della cartella è identico e lo duplica senza un nuovo caricamento completo?
Giuliano

@Julian Suppongo che ricarichi il tutto.
ComputerLocus

Ho appena confermato che in effetti riavvia tutti i file. Bummer.
Giuliano

senza l'app, è anche possibile fare clic con il pulsante destro del mouse - scaricare la cartella come zip e ricaricarla dopo l'archiviazione
kamidude

10

Ho scritto uno script per app solo per risolvere questo problema. Puoi copiare qualsiasi contenuto di cartella e la struttura in esso contenuta. Script aiuterà a eliminare la necessità dell'app desktop di Google Drive. Aggiungendo i trigger è anche possibile automatizzare il processo.

GDrive Copia struttura delle cartelle / script dei contenuti

Copia la struttura delle cartelle in Google Drive

Notare che :

  • questo aggiunge anche il suffisso _copya tutte le sottocartelle
  • Si folder_you_want_copied_copytrova nella gerarchia padre superiore del tuo Google Drive, quindi se hai copiato una sottocartella del tuo disco, passerà al livello più alto quando copiato

Funzionalità super interessante, ha funzionato perfettamente anche per cartelle molto grandi con centinaia di sottocartelle e migliaia di file (alcuni erano molto grandi). Grazie Shunmugh!
Kubusz,

3
aggiunge anche il suffisso "_copy" a tutte le sottocartelle, yikes!
manas,

5

Se ti trovi nell'interfaccia web di Google Drive ...

  1. Crea una nuova cartella e chiamala come vuoi.

  2. Vai nella cartella preesistente, seleziona tutti i file, fai clic destro e premi copia.

  3. Seleziona tutte le copie, fai clic con il tasto destro e premi sposta su. Seleziona la nuova cartella.

Si noti che questo metodo non funzionerà se la cartella che si desidera copiare ha sottocartelle.


4
Non esiste alcuna opzione "copia" nel menu di scelta rapida. C'è "fai una copia". Quello che vuoi dire è, fai una copia di tutti i file, quindi evidenzia le copie e spostale nella nuova cartella.
Blisterpeanuts,

È inoltre necessario rinominare tutti i file dopo averli spostati nella nuova cartella per rimuovere il prefisso "Copia di".
Tom,

Ciò si traduce in tutti i file con "Copia di" con prefisso ai nomi dei file.
Elijah Lynn,

@Blisterpeanuts Non c'è nemmeno "fare una copia" se si desidera copiare una cartella, anche se è vuota. Stranamente, se vuoi iniziare con un modello di nomi di directory vuoti
Michael,

Se sposti un gruppo di file con trascinamento della selezione mentre premi Ctrl appare un "+" vicino al puntatore del mouse e sembra funzionare, ma i file "copiati" sono solo collegamenti fissi , hanno lo stesso ID e se li elimini eliminerai sia quella copia che il file originale , che è necessario ripristinare dall'attività recente. AFAIK questo è un bug su Google Drive.
Pablo A

3

Risposta molto tardi per il PO, e penso che non sia nemmeno possibile al momento della domanda, ma questo è quello che faccio oggi:

  1. Seleziona la cartella che voglio duplicare.
  2. Fai clic su di esso, quindi scegli "Scarica" ​​dal menu a comparsa
  3. Chiedi al mio browser di salvare l'archivio zippato in una directory temporanea
  4. Estrai la cartella dall'archivio e assegnagli un nuovo nome
  5. Back in Drive; fai clic sul grande pulsante Nuovo blu e seleziona "Caricamento cartella" dal menu a discesa.
  6. Di nuovo nel mio computer; prendi la cartella appena nominata e trascinala di nuovo in Drive.
  7. Tira lo sciacquone

Nota: questa è una soluzione quando ci sono molti piccoli file e sottocartelle che insieme creano un file compresso di dimensioni ridotte. La sua utilità diminuisce all'aumentare della dimensione totale del file compresso.


1
Il problema principale di questa soluzione - a parte l'ovvia necessità di avere abbastanza spazio per archiviare localmente l'intero contenuto dell'unità, due volte (sia compresso che estratto) - è che se esporterà tutti i documenti di Google nel formato di documento MS OpenOffice appropriato, e quindi quando li ricarichi devi convertirli nuovamente nei formati di Google e gestire tutti i problemi di formattazione che ciò causa.
Guss,

3

Preferisco astenermi dal consentire l'accesso di terzi al mio Drive a meno che non sia così, come Lucky 711 , ho scritto la mia sceneggiatura. Lascio qui per futuri avventurieri risultati di Google. Copia la cartella e tutto il suo contenuto. Per il mio caso d'uso, l'ho scritto per gestire i file con più genitori semplicemente aggiungendo la cartella copiata come nuovo genitore. Se non lo desideri, elimina la parte "Conta i genitori che non sono questo genitore".

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());
  }

}

Per riferimento, se si desidera creare nuove copie di file con più genitori anziché aggiungere semplicemente la nuova cartella come altro genitore, il codice più breve sarebbe simile al seguente:

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());
  }

}

Come si esegue questo script? Oppure, come si ottengono i parametri di input?
roydukkey,

I suoi input sono l'ID della cartella che si desidera copiare, l'ID della cartella in cui si desidera creare la copia e il nome che si desidera abbia la copia. Per ottenere l'ID di una cartella, naviga verso di essa e osserva la fine dell'URL. Probabilmente è qualcosa di simile, 1jVlkj------------------------Gk3D7tranne che tutti i trattini sono personaggi. Quella stringa incomprensibile è l'ID univoco assegnato da Google. Una volta che hai i tre ingressi, chiameresti questa funzione da un'altra funzione con qualcosa del tipocopyFolderAndContentsToFolder('superLongIdString','anotherLongIdString','NewFolderName')
Ingegnere Toast,

Questo è quasi perfetto, ma nel mio caso ho file collegati a cartelle diverse. Quindi, invece di copiare il file, copia solo il collegamento.
Roydukkey,

Se intendi file che esistono in più posizioni (ad esempio, hanno più genitori), questo è indirizzato nel post. Puoi copiare solo la countOfOtherParents++;riga e questo lo farà. Per il mio caso d'uso, volevo esplicitamente che quei file ottenessero semplicemente un altro genitore piuttosto che creare una nuova copia del file. Se intendi file che fungono da collegamenti ipertestuali che aprono altre cartelle, non sapevo che potresti farlo.
Ingegnere Toast,

IE, il minimo cambiamento sarebbe questo, ma il codice "più pulito" sarebbe questo
Ingegnere Toast,

3

Puoi utilizzare il componente aggiuntivo " Copia cartella " per Fogli di lavoro Google:

  1. creare un foglio di calcolo di Google
  2. fai clic su Add-ons > Get add-onse aggiungi il componente aggiuntivo 'Copia cartella'
  3. seleziona la cartella che desideri copiare
  4. fatto

Guarda il video tutorial .

Oppure, questo Chrome Web Store di Google App Script può essere utilizzato per ottenere questo risultato. Questo non richiede la creazione di un foglio di calcolo di Google.


7
Ciò richiede che il componente aggiuntivo "Visualizza e leggi la tua e-mail"
Michael Cole,

@MichaelCole, e anche altre autorizzazioni problematiche: gestire fogli di calcolo, caricare siti Web arbitrari e, peggio ancora: accesso offline. Consiglio a nessuno di installarlo fino a quando i problemi di autorizzazione non saranno risolti.
Guss,

Ah .. è il nuovo audace mondo analitico post Cambridge in cui viviamo adesso
circa

Gestisci i fogli di calcolo è aggiungere un file di registro del foglio di calcolo mentre è in esecuzione.
Ajay,

@Ajay Quello era il mio male. Grazie per il reinvio.
jonsca

1

Uso più macchine e non voglio mettere l'app di unità su tutte, quindi ho scritto lo script seguente da copiare sul sito. È brutto e semplice ma funziona. Copia solo una cartella e i suoi file, non le sottocartelle. Sono sicuro che ci sia spazio per miglioramenti, quindi sentiti libero di prenderlo e migliorarlo, ma spero che sia almeno utile dall'inizio.

Per un commento qui sotto, questo è uno script di Google Apps. Il modo per usarlo è aprire l'app di scripting di Google, quindi copiare e incollare tutto il codice in uno script vuoto. Successivamente, fai clic sull'opzione di pubblicazione nel Menu, quindi seleziona Distribuisci come app Web. È quindi possibile fare clic sul collegamento Codice più recente o copiare e incollare l'URL nel browser. Quindi, troverai una casella in cui puoi digitare la cartella che desideri copiare e il pulsante Copia. Ciò dovrebbe creare una copia della cartella che hai nominato e una copia di tutti i file all'interno.

Nota: non copierà le sottocartelle, ma solo i file.

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)
  }

}

-1

Per duplicare una cartella trascinala su un'altra cartella tenendo premuto il tasto CTRL.


9
Ciò non si duplica; crea solo un puntatore. Ho provato questo facendo Ctrl-drag-n-drop di una cartella in un paio di posti diversi, quindi ho creato un file nella cartella e il file è visibile in ogni luogo.
Ale

Giusto. Lo chiamano "aggiungere una cartella"
th3an0maly,

4
-1, non funziona.
Pacerier,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.