Tôi cần sao chép toàn bộ thư mục trên Google Drive mỗi tuần một lần. Có khoảng 25 tệp trong thư mục. Một cách dễ dàng để làm điều này là gì?
Tôi cần sao chép toàn bộ thư mục trên Google Drive mỗi tuần một lần. Có khoảng 25 tệp trong thư mục. Một cách dễ dàng để làm điều này là gì?
Câu trả lời:
Nếu bạn đang sử dụng ứng dụng Google Drive trên PC, bạn có thể sao chép và dán thư mục vào thư mục Google Drive và điều này sẽ sao chép nó. Tôi không tin rằng có thể làm điều này từ ứng dụng web.
Đã viết một Script ứng dụng chỉ để giải quyết vấn đề này. Bạn có thể sao chép bất kỳ nội dung thư mục cũng như cấu trúc trong đó. Script sẽ giúp loại bỏ sự cần thiết của ứng dụng máy tính để bàn Google Drive. Bằng cách thêm các kích hoạt, bạn thậm chí có thể tự động hóa quá trình.
GDrive Sao chép cấu trúc thư mục / Script nội dung
Xin lưu ý :
_copy
cho tất cả các thư mục confolder_you_want_copied_copy
này nằm trong hệ thống phân cấp cha mẹ cao nhất của Google Drive của bạn, vì vậy nếu bạn đã sao chép thư mục con của ổ đĩa, nó sẽ nổi lên mức cao nhất khi được sao chépNếu bạn đang ở trong giao diện web Google Drive ...
Tạo một thư mục mới và đặt tên nó là những gì bạn muốn.
Đi vào thư mục Có sẵn, chọn tất cả các tệp, nhấp chuột phải và nhấn sao chép.
Chọn tất cả các bản sao, nhấp chuột phải và nhấn di chuyển đến. Chọn thư mục mới.
Lưu ý rằng phương pháp này sẽ không hoạt động nếu thư mục bạn muốn sao chép có các thư mục con.
Câu trả lời rất muộn cho OP, và tôi nghĩ thậm chí không thể vào lúc hỏi, nhưng đây là những gì tôi làm hôm nay:
Lưu ý: Đây là một giải pháp khi bạn có rất nhiều tệp nhỏ và thư mục con cùng tạo thành một tệp nén nhỏ. Tính hữu dụng của nó giảm khi tổng kích thước tệp nén tăng.
Tôi không muốn cho phép các bên thứ ba truy cập vào Drive của mình trừ khi tôi phải như vậy, như Lucky 711 , tôi đã viết kịch bản của riêng mình. Tôi để nó ở đây cho các nhà thám hiểm kết quả Google trong tương lai. Nó sẽ sao chép thư mục và tất cả nội dung của nó. Đối với trường hợp sử dụng của tôi, tôi đã viết nó để xử lý các tệp có nhiều cha mẹ bằng cách thêm thư mục được sao chép làm cha mẹ mới. Nếu bạn không muốn điều đó, hãy bỏ phần "Đếm cha mẹ không phải cha mẹ này".
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());
}
}
Để tham khảo, nếu bạn muốn tạo các bản sao mới của các tệp có nhiều cha mẹ thay vì chỉ thêm thư mục mới làm cha mẹ khác, mã ngắn hơn sẽ trông như thế này:
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
ngoại trừ tất cả các dấu gạch ngang là các ký tự. Chuỗi vô nghĩa đó là ID duy nhất mà Google đã gán. Khi bạn có ba đầu vào, bạn sẽ gọi hàm này từ một hàm khác với một cái gì đó giống nhưcopyFolderAndContentsToFolder('superLongIdString','anotherLongIdString','NewFolderName')
countOfOtherParents++;
dòng và điều đó sẽ làm được. Đối với trường hợp sử dụng của tôi, tôi rõ ràng muốn các tệp đó chỉ đơn giản là nhận cha mẹ khác thay vì tạo một bản sao mới của tệp. Nếu bạn có nghĩa là các tệp hoạt động như các siêu liên kết mở các thư mục khác, thì tôi không biết bạn có thể làm điều đó.
Bạn có thể sử dụng tiện ích bổ sung " Sao chép thư mục " cho Bảng tính Google:
Add-ons > Get add-ons
và thêm tiện ích 'Sao chép thư mục' Xem video hướng dẫn .
Hoặc, Google App Script cửa hàng chrome này có thể được sử dụng để đạt được kết quả này. Điều này không yêu cầu tạo Bảng tính Google.
Tôi sử dụng nhiều máy và không muốn đặt ứng dụng ổ đĩa lên tất cả chúng vì vậy tôi đã viết đoạn script dưới đây để sao chép trên trang web. Nó xấu và cơ bản nhưng nó hoạt động. Nó chỉ sao chép một thư mục và các tập tin của nó, không phải các thư mục phụ. Tôi chắc chắn có chỗ để cải thiện, vì vậy hãy thoải mái thực hiện điều này và cải thiện nó, nhưng tôi hy vọng nó ít nhất hữu ích ngay từ đầu.
Mỗi bình luận bên dưới, đây là Tập lệnh Google Apps. Cách sử dụng là mở ứng dụng Google scripting, sau đó sao chép và dán tất cả mã vào một tập lệnh trống. Sau đó nhấp vào tùy chọn xuất bản trên Menu, sau đó chọn triển khai dưới dạng ứng dụng web. Sau đó, bạn có thể nhấp vào liên kết mã mới nhất hoặc sao chép và dán URL vào trình duyệt của mình. Sau đó, bạn sẽ tìm thấy một hộp nơi bạn có thể nhập thư mục mà bạn muốn sao chép và nút sao chép. Điều đó sẽ tạo một bản sao của thư mục bạn đã đặt tên và một bản sao của tất cả các tệp trong đó.
Lưu ý: nó sẽ không sao chép các thư mục con, chỉ các tệp.
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)
}
}
Để nhân đôi thư mục, kéo và thả nó vào thư mục khác đang giữ nút CTRL.
Đây là một ứng dụng Google Script Macros rất tốt: https://script.google.com/macros/s/AKfycbxbGNGajrxv-HbX2sVY2OTu7yj9VvxlOMOeQblZFuq7rYm7uyo/exec
với nhật ký thời gian thực và bộ chọn thư mục.