¿Puedo duplicar una carpeta en Google Drive?

44

Necesito duplicar una carpeta completa en mi Google Drive una vez por semana. Hay alrededor de 25 archivos en la carpeta. ¿Cuál es una manera fácil de hacer esto?

Amigo2012
fuente
Desde la interfaz web, supongo. Esto sería académico si está utilizando el cliente y sincronizando con una carpeta en su PC.
cerveza
¿Desea respaldar las cosas en esa carpeta? o intentas agregarlo a otra cuenta de google? ¿Necesita todo el contenido de la carpeta o solo lo harán los punteros?
William
Necesitaba duplicarlo porque quiero tener diferentes permisos sobre ellos, para esto, necesito tener entornos separados. ¡Pero usar Google Drive para PC funcionó bien!
Dude2012
Copiar carpeta Complemento de
Simon Woodside

Respuestas:

19

Si está utilizando la aplicación Google Drive en su PC, puede copiar y pegar la carpeta en el directorio de Google Drive, y esto la copiará. No creo que sea posible hacer esto desde la aplicación web.

ComputerLocus
fuente
44
Desafortunadamente para los usuarios de Linux, hasta hoy Google no tiene soporte para la "Aplicación Google Drive". Por lo tanto, necesitan usar algo llamado " grive "
iammilind
¿Volverá a cargar toda la carpeta nueva en la web, o sabe que el contenido de la carpeta es idéntico y lo duplica sin una recarga completa?
Juliano
@Julian Supongo que vuelve a cargar todo.
ComputerLocus
Acabo de confirmar que de hecho vuelve a cargar todos los archivos. Gorrón.
Julian
sin la aplicación, también es posible hacer clic derecho - descargar la carpeta como zip y volver a cargarla después de desarchivar
kamidude
10

He escrito un script de aplicación solo para solucionar este problema. Puede copiar el contenido de cualquier carpeta, así como la estructura que contiene. El script ayudará a eliminar la necesidad de la aplicación de escritorio Google Drive. Al agregar disparadores, incluso puede automatizar el proceso.

Estructura de carpetas de copia de GDrive / secuencia de comandos de contenido

Copiar estructura de carpetas en Google Drive

Tenga en cuenta :

  • esto también agrega sufijo _copya todas las subcarpetas
  • El folder_you_want_copied_copyestá en la jerarquía principal más alta de su Google Drive, por lo que si copió una subcarpeta de su unidad, se elevará al nivel más alto cuando se copie
Shunmugh Sundaram
fuente
Característica súper genial, funcionó perfectamente incluso para carpetas muy grandes con cientos de subcarpetas y miles de archivos (algunos eran muy grandes). Gracias Shunmugh!
kubusz
3
También agrega el sufijo "_copy" a todas las subcarpetas, ¡ay!
manas
5

Si está en la interfaz web de Google Drive ...

  1. Cree una nueva carpeta y asígnele el nombre que desee.

  2. Vaya a la carpeta preexistente, seleccione todos los archivos, haga clic derecho y presione copiar.

  3. Seleccione todas las copias, haga clic derecho y presione mover a. Seleccione la nueva carpeta.

Tenga en cuenta que este método no funcionará si la carpeta que desea copiar tiene subcarpetas.

Brandon
fuente
44
No hay una opción de "copia" en el menú del botón derecho. Hay "hacer una copia". Lo que quieres decir es, haz una copia de todos los archivos, luego resalta las copias y muévelas a la nueva carpeta.
Blisterpeanuts
También es necesario cambiar el nombre de todos los archivos después de moverlos a la nueva carpeta para eliminar el prefijo "Copia de".
Tom
Esto da como resultado que todos los archivos tengan "Copia de" prefijada a los nombres de archivo.
Elijah Lynn el
@Blisterpeanuts Tampoco hay "hacer una copia" si desea copiar una carpeta, incluso si está vacía. De manera molesta, si quieres comenzar con una plantilla de nombres de directorio vacíos
Michael
Si mueve un grupo de archivos con arrastrar y soltar mientras presiona Ctrl, aparece un "+" cerca del puntero del mouse y parece funcionar, pero los archivos "copiados" son solo enlaces duros , tienen la misma ID y, si los elimina , los eliminará tanto esa copia como el archivo original , necesitando restaurar desde una actividad reciente. AFAIK esto es un error en Google Drive.
Pablo A
3

Respuesta muy tardía para el OP, y creo que ni siquiera es posible a la hora de preguntar, pero esto es lo que hago hoy:

  1. Seleccione la carpeta que quiero duplicar.
  2. Haga clic secundario en él y luego elija "Descargar" en el menú emergente
  3. Hacer que mi navegador guarde el archivo comprimido en un directorio temporal
  4. Extraiga la carpeta del archivo y asígnele un nuevo nombre.
  5. De vuelta en Drive; haga clic en el botón azul grande Nuevo y seleccione "Carga de carpeta" en el menú desplegable.
  6. De vuelta en mi computadora; agarre la carpeta recién nombrada y arrástrela nuevamente a Drive.
  7. Descargar el baño

Nota: Esta es una solución cuando tiene muchos pequeños archivos y subcarpetas que juntos forman un archivo comprimido más pequeño. Su utilidad disminuye a medida que aumenta el tamaño total del archivo comprimido.

Martin Bramwell
fuente
1
El principal problema de esta solución, aparte de la necesidad obvia de tener suficiente espacio para almacenar localmente todo el contenido de la unidad, dos veces (tanto comprimido como extraído), es que si exporta todos los documentos de Google al formato de documento MS OpenOffice apropiado, y luego cuando los vuelve a cargar, debe convertirlos nuevamente a los formatos de Google y abordar todos los problemas de formato que esto causa.
Guss
3

Prefiero abstenerme de permitir el acceso de terceros a mi Drive a menos que tenga que hacerlo, como Lucky 711 , escribí mi propio script. Lo dejo aquí para futuros aventureros de resultados de Google. Copiará la carpeta y todos sus contenidos. Para mi caso de uso, lo escribí para manejar archivos con varios padres simplemente agregando la carpeta copiada como un nuevo padre. Si no quiere eso, suelte la parte "Contar a los padres que no son este padre".

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

}

Como referencia, si desea crear nuevas copias de archivos con varios padres en lugar de simplemente agregar la nueva carpeta como otro padre, el código más corto se vería así:

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

}
Tostadas de ingeniero
fuente
¿Cómo ejecutas este script? O, ¿cómo se obtienen los parámetros de entrada?
roydukkey
Sus entradas son la ID de la carpeta que desea copiar, la ID de la carpeta en la que desea crear la copia y el nombre que desea que tenga la copia. Para obtener la ID de una carpeta, navegue hasta ella y mire al final de la URL. Probablemente sea algo así, 1jVlkj------------------------Gk3D7excepto que todos los guiones son caracteres. Esa cadena de galimatías es la identificación única que Google asignó. Una vez que tenga las tres entradas, llamaría a esta función desde otra función con algo así comocopyFolderAndContentsToFolder('superLongIdString','anotherLongIdString','NewFolderName')
Engineer Toast
Esto es casi perfecto, pero en mi caso tengo archivos que están vinculados a diferentes carpetas. Entonces, en lugar de copiar el archivo, simplemente copia el enlace.
roydukkey
Si te refieres a archivos que existen en múltiples ubicaciones (es decir, tienen varios padres), eso se aborda en la publicación. Puede copiar countOfOtherParents++;solo la línea y eso lo hará. Para mi caso de uso, quería explícitamente que esos archivos simplemente obtuvieran otro padre en lugar de crear una nueva copia del archivo. Si te refieres a archivos que actúan como hipervínculos que abren otras carpetas, entonces no sabía que podías hacerlo.
Engineer Toast
IE, el cambio mínimo sería este, pero el código "más limpio" sería este
Engineer Toast
3

Puede usar el complemento " Copiar carpeta " para las hojas de cálculo de Google:

  1. crear una hoja de cálculo de Google
  2. haga clic en Add-ons > Get add-onsy agregue el complemento 'Copiar carpeta'
  3. seleccione la carpeta que desea copiar
  4. hecho

Vea el video tutorial .

O bien, este script de aplicación de Google de la tienda web Chrome se puede utilizar para lograr este resultado. Este no requiere la creación de una hoja de cálculo de Google.

abbood
fuente
77
Esto requiere dejar que el complemento "Vea y lea su correo electrónico"
Michael Cole
@MichaelCole, y también otros permisos problemáticos: administre hojas de cálculo, cargue sitios web arbitrarios y lo peor de todo: acceso sin conexión. Recomiendo que nadie instale esto hasta que se solucionen los problemas de permisos.
Guss
Ah .. es el valiente Nuevo mundo post analítica de Cambridge en el que vivimos ahora
abbood
Administrar hojas de cálculo es agregar un archivo de registro de hoja de cálculo mientras se está ejecutando.
Ajay
@Ajay Ese fue mi mal. Gracias por volver a enviar.
jonsca
1

Utilizo varias máquinas y no quiero poner la aplicación de disco en todas ellas, así que escribí el siguiente script para copiar en el sitio. Es feo y básico pero funciona. Solo copia una carpeta y sus archivos, no subcarpetas. Estoy seguro de que hay margen de mejora, así que siéntase libre de tomar esto y mejorarlo, pero espero que al menos sea útil desde el principio.

Según un comentario a continuación, este es un script de Google Apps. La forma de usarlo es abrir la aplicación de secuencias de comandos de Google, luego copiar y pegar todo el código en una secuencia de comandos en blanco. Después de eso, haga clic en la opción de publicación en el Menú, luego seleccione implementar como aplicación web. Luego puede hacer clic en el enlace del último código o copiar y pegar la URL en su navegador. Luego, encontrará un cuadro donde puede escribir la carpeta que desea copiar y el botón Copiar. Eso debería crear una copia de la carpeta que ha nombrado y una copia de todos los archivos que contiene.

Nota: no copiará subcarpetas, solo los archivos.

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
fuente
-1

Para duplicar una carpeta, arrástrela y suéltela en otra carpeta con el botón CTRL.

aborruso
fuente
99
Eso no se duplica; solo crea un puntero. Probé esto haciendo Ctrl-arrastrar y soltar de una carpeta en un par de lugares diferentes, luego creé un archivo en la carpeta y el archivo es visible en todos los lugares.
cerveza
Eso es correcto. Lo llaman "agregar una carpeta"
th3an0maly
44
-1, no funciona.
Pacerier