Muszę duplikować cały folder na Dysku Google raz w tygodniu. W folderze znajduje się około 25 plików. Jak to łatwo zrobić?
Muszę duplikować cały folder na Dysku Google raz w tygodniu. W folderze znajduje się około 25 plików. Jak to łatwo zrobić?
Odpowiedzi:
Jeśli korzystasz z aplikacji Dysk Google na komputerze, możesz skopiować i wkleić folder w katalogu Dysk Google, a to go skopiuje. Nie wierzę, że można to zrobić z poziomu aplikacji internetowej.
Napisałem skrypt aplikacji, aby rozwiązać ten problem. Możesz skopiować dowolną zawartość folderu oraz zawartą w nim strukturę. Skrypt pomoże wyeliminować potrzebę korzystania z aplikacji komputerowej Dysk Google. Dodając wyzwalacze, możesz nawet zautomatyzować proces.
Skopiuj strukturę folderów / skrypt treści GDrive
Proszę zanotować :
_copy
do wszystkich podfolderówfolder_you_want_copied_copy
Jest w najwyższej hierarchii dominującego Dysku Google, więc jeśli kopiowane podfolder z dysku, to bańka aż do najwyższego poziomu, gdy kopiowanyJeśli korzystasz z interfejsu internetowego Dysku Google ...
Utwórz nowy folder i nazwij go tak, jak chcesz.
Przejdź do istniejącego folderu, wybierz wszystkie pliki, kliknij prawym przyciskiem myszy i naciśnij kopiuj.
Wybierz wszystkie kopie, kliknij prawym przyciskiem myszy i naciśnij przenieś do. Wybierz nowy folder.
Pamiętaj, że ta metoda nie będzie działać, jeśli folder, który chcesz skopiować, ma podfoldery.
Bardzo późna odpowiedź na OP, i myślę, że nawet nie jest to możliwe w chwili zapytania, ale to właśnie robię dzisiaj:
Uwaga: Jest to rozwiązanie, gdy masz dużo małych plików i podfolderów, które razem tworzą niewielki skompresowany plik. Przydatność maleje wraz ze wzrostem całkowitego rozmiaru skompresowanego pliku.
Wolę powstrzymać się od umożliwienia stronom trzecim dostępu do mojego Dysku, chyba że muszę, tak jak Lucky 711 , napisałem własny skrypt. Zostawiam to tutaj dla przyszłych poszukiwaczy przygód Google. Skopiuje folder i całą jego zawartość. Dla mojego przypadku użycia napisałem go do obsługi plików z wieloma rodzicami, po prostu dodając skopiowany folder jako nowego rodzica. Jeśli nie chcesz tego, upuść część „Policz rodziców, którzy nie są tym rodzicem”.
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());
}
}
Na przykład, jeśli chcesz tworzyć nowe kopie plików z wieloma rodzicami, a nie tylko dodawać nowy folder jako inny rodzic, krótszy kod wyglądałby następująco:
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
z wyjątkiem tego, że wszystkie myślniki są postaciami. Ten bełkotliwy ciąg jest unikalnym identyfikatorem przypisanym przez Google. Gdy masz już trzy wejścia, możesz wywołać tę funkcję z innej funkcji z czymś w rodzajucopyFolderAndContentsToFolder('superLongIdString','anotherLongIdString','NewFolderName')
countOfOtherParents++;
tylko linię i to wystarczy. W moim przypadku jawnie chciałem, aby te pliki po prostu otrzymały innego rodzica, niż tworzyć nową kopię pliku. Jeśli masz na myśli pliki, które działają jak hiperłącza otwierające inne foldery, to nie wiedziałem, że możesz to zrobić.
Możesz użyć dodatku „ Kopiuj folder ” dla Arkuszy kalkulacyjnych Google:
Add-ons > Get add-ons
i dodaj dodatek „Kopiuj folder” Zobacz samouczek wideo .
Lub, ten chromowany sklep internetowy Google App Script może być wykorzystany do osiągnięcia tego wyniku. Ten nie wymaga utworzenia arkusza kalkulacyjnego Google.
Korzystam z wielu komputerów i nie chcę umieszczać na nich aplikacji napędowej, dlatego napisałem poniższy skrypt do skopiowania na stronie. Jest brzydki i podstawowy, ale działa. Kopiuje tylko folder i jego pliki, a nie podfoldery. Jestem pewien, że jest miejsce na ulepszenia, więc nie krępuj się i weź to i popraw, ale mam nadzieję, że przynajmniej pomoże od samego początku.
Zgodnie z komentarzem poniżej jest to skrypt Google Apps. Aby go użyć, otwórz aplikację skryptową Google, a następnie skopiuj i wklej cały kod do pustego skryptu. Następnie kliknij opcję publikowania w menu, a następnie wybierz wdróż jako aplikację internetową. Następnie możesz kliknąć link Najnowszy kod lub skopiować i wkleić adres URL do przeglądarki. Następnie znajdziesz pole, w którym możesz wpisać folder, który chcesz skopiować, oraz przycisk kopiowania. To powinno utworzyć kopię folderu, który nazwałeś, oraz kopię wszystkich plików w nim zawartych.
Uwaga: nie będzie kopiować podfolderów, tylko pliki.
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)
}
}
Aby powielić folder, przeciągnij go i upuść w innym folderze, przytrzymując przycisk CTRL.
To bardzo dobra aplikacja Google Script Macros: https://script.google.com/macros/s/AKfycbxbGNGajrxv-HbX2sVY2OTu7yj9VvxlOMOeQblZFuq7rYm7uyo/exec
z dziennikami w czasie rzeczywistym i selektorem folderów.