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?
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?
Risposte:
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.
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
Notare che :
_copy
a tutte le sottocartellefolder_you_want_copied_copy
trova nella gerarchia padre superiore del tuo Google Drive, quindi se hai copiato una sottocartella del tuo disco, passerà al livello più alto quando copiatoSe ti trovi nell'interfaccia web di Google Drive ...
Crea una nuova cartella e chiamala come vuoi.
Vai nella cartella preesistente, seleziona tutti i file, fai clic destro e premi copia.
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.
Risposta molto tardi per il PO, e penso che non sia nemmeno possibile al momento della domanda, ma questo è quello che faccio oggi:
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.
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());
}
}
1jVlkj------------------------Gk3D7
tranne 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')
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.
Puoi utilizzare il componente aggiuntivo " Copia cartella " per Fogli di lavoro Google:
Add-ons > Get add-ons
e aggiungi il componente aggiuntivo 'Copia cartella' 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.
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)
}
}
Per duplicare una cartella trascinala su un'altra cartella tenendo premuto il tasto CTRL.
Questa è un'ottima app di Google Script Macros: https://script.google.com/macros/s/AKfycbxbGNGajrxv-HbX2sVY2OTu7yj9VvxlOMOeQblZFuq7rYm7uyo/exec
con registri in tempo reale e selettore di cartelle.