Google Drive’ımdaki bir klasörü haftada bir kez kopyalamam gerekiyor. Klasörde yaklaşık 25 dosya var. Bunu yapmanın kolay yolu nedir?
Google Drive’ımdaki bir klasörü haftada bir kez kopyalamam gerekiyor. Klasörde yaklaşık 25 dosya var. Bunu yapmanın kolay yolu nedir?
Yanıtlar:
PC’nizde Google Drive uygulamasını kullanıyorsanız, klasörü Google Drive dizinine kopyalayıp yapıştırabilirsiniz, bu işlem onu kopyalar. Bunu web uygulamasından yapmanın mümkün olduğuna inanmıyorum.
Sadece bu sorunu çözmek için bir Uygulama Komut Dosyası yazdınız. Herhangi bir klasör içeriğini ve içindeki yapıyı kopyalayabilirsiniz. Komut Dosyası, Google Drive masaüstü uygulamasına duyulan ihtiyacı ortadan kaldırmaya yardımcı olacaktır. Tetikleyiciler ekleyerek işlemi otomatikleştirebilirsiniz.
GDrive Kopyalama Klasörü Yapısı / İçerik Komut Dosyası
Lütfen aklınızda bulundurun :
_copy
tüm alt klasörlere sonek ekler.folder_you_want_copied_copy
Eğer sürücü bir alt klasör kopyalanmış eğer öyleyse en yüksek seviyeye kabarcık kadar kopyalanan ne zaman, Google Drive en yüksek üst hiyerarşide bulunanGoogle Drive web arayüzündeyseniz ...
Yeni bir klasör oluşturun ve istediğinizi adlandırın.
Önceden var olan klasöre gidin, tüm dosyaları seçin, sağ tıklayın ve kopyalayın.
Tüm kopyaları seçin, sağ tıklayın ve düğmesine basın. Yeni Klasörü Seçin.
Kopyalamak istediğiniz klasörde alt klasörler varsa, bu yöntemin işe yaramayacağını unutmayın.
OP için çok geç cevap, ve sorduğumda bile mümkün olmadığını düşünüyorum, ama bugün yaptığım şey şu:
Not: Bu, ufacık bir sıkıştırılmış dosya için birlikte oluşturduğunuz çok sayıda küçük dosya ve alt klasörünüz olduğunda bir çözümdür. Sıkıştırılmış dosya boyutu arttıkça kullanımı azalır.
Zorunda olmadıkça üçüncü tarafların Drive'ma erişmesine izin vermekten kaçınmayı tercih ediyorum, Lucky 711 gibi kendi senaryomu yazdım. Gelecekteki Google sonuçları maceracıları için burada bırakıyorum. Klasörü ve tüm içeriğini kopyalayacaktır. Kullanım davamda, kopyalanan klasörü yeni bir ebeveyn olarak ekleyerek birden fazla ebeveyn içeren dosyaları işlemek için yazdım. Bunu istemiyorsanız, "Bu ebeveyn olmayan ebeveynleri sayın" bölümünü bırakın.
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());
}
}
Başvuru için, yalnızca yeni klasörü başka bir üst öğe olarak eklemek yerine, birden fazla üst üste sahip yeni dosya kopyaları oluşturmak istiyorsanız, kısa kod şöyle görünür:
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
tüm çizgi karakterleri dışında bir şey gibi . Bu anlamsız dize, Google’ın atadığı benzersiz kimliktir. Üç girdiye sahip olduğunuzda, bu işlevi başka bir işlevden copyFolderAndContentsToFolder('superLongIdString','anotherLongIdString','NewFolderName')
countOfOtherParents++;
satırı kopyalayabilirsiniz ve bu işlem gerçekleşir. Kullanım davam için, açıkça açıkça bu dosyaların yeni bir kopyasını oluşturmak yerine başka bir üst elde etmelerini istedim. Diğer klasörleri açan köprüler gibi davranan dosyaları kastediyorsanız, o zaman bunu yapabileceğinizi bilmiyordum.
Google E-Tablolar için " Klasör Kopyala " eklentisini kullanabilirsiniz :
Add-ons > Get add-ons
ve 'Kopyala Klasörü' eklentisini ekleyin. Video eğitimine bakın .
Veya bu krom web mağazası Google App Script bu sonucu elde etmek için kullanılabilir. Bu bir Google Elektronik Tablo oluşturulmasını gerektirmez.
Birden fazla makine kullanıyorum ve sürücü uygulamasını hepsine eklemek istemiyorum, bu yüzden aşağıdaki kopyayı siteye kopyalamak için yazdım. Çirkin ve basit ama işe yarıyor. Yalnızca bir klasörü ve dosyalarını kopyalar, alt klasörleri değil. İyileştirme için oda olduğundan eminim, bu yüzden bunu almaktan ve iyileştirmekten çekinmeyin, ama umarım en azından başlangıçta yardımcı olur.
Aşağıdaki bir yorumda, bu bir Google Apps Komut Dosyasıdır. Kullanmanın yolu, Google komut dosyası uygulamasını açmak, ardından kodu boş bir komut dosyasına kopyalayıp yapıştırmaktır. Bundan sonra Menü'deki yayınlama seçeneğini tıkladıktan sonra web uygulaması olarak dağıtmayı seçin. Son kod bağlantısını tıklayabilir veya URL'yi kopyalayıp tarayıcınıza yapıştırabilirsiniz. Ardından, kopyalamak istediğiniz klasörü ve kopyala düğmesini yazabileceğiniz bir kutu bulacaksınız. Bu, adlandırdığınız klasörün bir kopyasını ve içindeki tüm dosyaların bir kopyasını oluşturmalıdır.
Not: alt klasörleri, sadece dosyaları kopyalamaz.
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)
}
}
Bir klasörü çoğaltmak için CTRL tuşunu basılı tutarak başka bir klasöre sürükleyip bırakın.
Bu çok iyi bir Google Script Makroları uygulamasıdır: https://script.google.com/macros/s/AKfycbxbGNGajrxv-HbX2sVY2OTu7yj9VvxlOMOeQblZFuq7rYm7uyo/exec
Gerçek zamanlı günlükleri ve klasör seçici ile.