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?
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?
Respuestas:
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.
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
Tenga en cuenta :
_copy
a todas las subcarpetasfolder_you_want_copied_copy
está 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 copieSi está en la interfaz web de Google Drive ...
Cree una nueva carpeta y asígnele el nombre que desee.
Vaya a la carpeta preexistente, seleccione todos los archivos, haga clic derecho y presione copiar.
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.
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:
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.
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());
}
}
1jVlkj------------------------Gk3D7
excepto 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')
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.
Puede usar el complemento " Copiar carpeta " para las hojas de cálculo de Google:
Add-ons > Get add-ons
y agregue el complemento 'Copiar carpeta' 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.
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)
}
}
Para duplicar una carpeta, arrástrela y suéltela en otra carpeta con el botón CTRL.
Esta es una muy buena aplicación de Google Script Macros: https://script.google.com/macros/s/AKfycbxbGNGajrxv-HbX2sVY2OTu7yj9VvxlOMOeQblZFuq7rYm7uyo/exec
con registros en tiempo real y selector de carpeta.