web-dev-qa-db-fra.com

Puis-je dupliquer un dossier dans Google Drive?

Je dois dupliquer un dossier complet sur mon Google Drive une fois par semaine. Il y a environ 25 fichiers dans le dossier. Quel est un moyen facile de faire cela?

44
Dude2012

Si vous utilisez l'application Google Drive sur votre PC, vous pouvez copier et coller le dossier dans le répertoire Google Drive, ce qui le copierait. Je ne crois pas qu'il soit possible de le faire à partir de l'application Web.

19
ComputerLocus

Vous avez écrit un script d'application juste pour résoudre ce problème. Vous pouvez copier n'importe quel contenu de dossier ainsi que sa structure. Le script aidera à éliminer le besoin d’application de bureau Google Drive. En ajoutant des déclencheurs, vous pouvez même automatiser le processus.

Script de contenu/structure de dossier GDrive Copy

Copy Folder Structure in Google Drive

Notez s'il vous plaît :

  • ceci ajoute également le suffixe _copy à tous les sous-dossiers
  • Le folder_you_want_copied_copy se trouve dans la hiérarchie parent la plus élevée de votre Google Drive. Par conséquent, si vous avez copié un sous-dossier de votre lecteur, il bouillonnera au plus haut niveau lors de la copie.
10

Si vous êtes dans l'interface Web de Google Drive ...

  1. Créez un nouveau dossier et nommez-le comme vous voulez.

  2. Allez dans le dossier pré-existant, sélectionnez tous les fichiers, cliquez avec le bouton droit et appuyez sur copier.

  3. Sélectionnez toutes les copies, cliquez avec le bouton droit de la souris et cliquez sur déplacer pour. Sélectionnez le nouveau dossier.

Notez que cette méthode ne fonctionnera pas si le dossier que vous souhaitez copier contient des sous-dossiers.

5
Brandon

Je préfère m'abstenir d'autoriser des tiers à accéder à mon Drive à moins que je ne le sois obligé, comme Lucky 711 , j'ai écrit mon propre script. Je le laisse ici pour les futurs aventuriers des résultats Google. Il va copier le dossier et tout son contenu. Pour mon cas d'utilisation, je l'ai écrit pour gérer les fichiers avec plusieurs parents en ajoutant simplement le dossier copié en tant que nouveau parent. Si vous ne le souhaitez pas, supprimez la partie "Compter les parents qui ne sont pas ce parent".

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

}

Pour référence, si vous voulez créer de nouvelles copies de fichiers avec plusieurs parents plutôt que de simplement ajouter le nouveau dossier en tant que autre parent, le code le plus court ressemblera à ceci:

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

}
3
Engineer Toast

Réponse très tardive pour le PO, et je pense même pas possible au moment de demander, mais c'est ce que je fais aujourd'hui:

  1. Sélectionnez le dossier que je veux dupliquer.
  2. Cliquez dessus dessus, puis choisissez "Télécharger" dans le menu contextuel.
  3. Mon navigateur enregistre l'archive compressée dans un répertoire temporaire
  4. Extraire le dossier de l'archive et lui donner un nouveau nom
  5. Retour en voiture; Cliquez sur le gros bouton bleu Nouveau et sélectionnez "Téléchargement du dossier" dans le menu déroulant.
  6. De retour dans mon ordinateur; récupérez le dossier nouvellement nommé et faites-le glisser dans Drive.
  7. Tirer la toilette

Remarque: C'est une solution lorsque vous avez beaucoup de petits fichiers et sous-dossiers qui forment ensemble un fichier compressé de taille réduite. Son utilité diminue à mesure que la taille totale du fichier compressé augmente.

3
Martin Bramwell

Vous pouvez utiliser le module complémentaire " Copier le dossier " pour Google Spreadsheets:

  1. créer une feuille de calcul Google
  2. cliquez sur Add-ons > Get add-ons et ajoutez l'add-on 'Copier dossier'
  3. sélectionnez le dossier que vous voulez copier
  4. terminé

Voir le tutoriel vidéo .

Ou, ce chrome script Web App Google store peut être utilisé pour obtenir ce résultat. Celui-ci ne nécessite pas la création d'une feuille de calcul Google.

3
abbood

J'utilise plusieurs machines et je ne veux pas installer l'application de lecteur sur toutes les machines. J'ai donc écrit le script ci-dessous pour le copier sur le site. C’est moche et basique mais ça marche. Il ne copie qu'un dossier et ses fichiers, pas des sous-dossiers. Je suis sûr que des améliorations sont possibles, alors n'hésitez pas à prendre cela et à l’améliorer, mais j’espère que cela sera au moins utile dès le début.

Par un commentaire ci-dessous, il s'agit d'un script Google Apps. La façon de l'utiliser consiste à ouvrir l'application de script Google, puis à copier et coller tout le code dans un script vierge. Après cela, cliquez sur l'option de publication dans le menu, puis sélectionnez déployer en tant qu'application Web. Vous pouvez ensuite cliquer sur le lien Dernier code ou copier et coller l'URL dans votre navigateur. Ensuite, vous trouverez une boîte où vous pouvez taper le dossier que vous souhaitez copier et le bouton de copie. Cela devrait créer une copie du dossier que vous avez nommé et une copie de tous les fichiers qu’elle contient.

Remarque: il ne copiera pas les sous-dossiers, mais uniquement les fichiers.

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
Lucky 711