Saya perlu menduplikasi seluruh folder di Google Drive saya seminggu sekali. Ada sekitar 25 file dalam folder tersebut. Apa cara mudah untuk melakukan ini?
Saya perlu menduplikasi seluruh folder di Google Drive saya seminggu sekali. Ada sekitar 25 file dalam folder tersebut. Apa cara mudah untuk melakukan ini?
Jawaban:
Jika Anda menggunakan aplikasi Google Drive di PC Anda, Anda dapat menyalin dan menempel folder di direktori Google Drive, dan ini akan menyalinnya. Saya tidak percaya mungkin untuk melakukan ini dari aplikasi web.
Telah menulis Skrip Aplikasi hanya untuk mengatasi masalah ini. Anda dapat menyalin konten folder apa pun serta struktur di dalamnya. Script akan membantu menghilangkan kebutuhan aplikasi desktop Google Drive. Dengan menambahkan pemicu, Anda bahkan dapat mengotomatiskan proses.
GDrive Copy Folder Structure / Content Script
Tolong dicatat :
_copy
untuk semua subfolderfolder_you_want_copied_copy
berada dalam hierarki induk tertinggi dari Google Drive Anda, jadi jika Anda menyalin subfolder drive Anda, drive itu akan menggelembung ke tingkat tertinggi saat disalin.Jika Anda berada di antarmuka web Google Drive ...
Buat folder baru dan beri nama apa yang Anda inginkan.
Buka folder yang sudah ada, pilih semua file, klik kanan dan tekan copy.
Pilih semua salinan, klik kanan dan tekan pindah ke. Pilih Folder Baru.
Perhatikan bahwa metode ini tidak akan berfungsi jika folder yang ingin Anda salin memiliki subfolder.
Jawaban yang sangat terlambat untuk OP, dan saya pikir tidak mungkin pada saat bertanya, tapi inilah yang saya lakukan hari ini:
Catatan: Ini adalah solusi ketika Anda memiliki banyak file kecil dan sub-folder yang bersama-sama membuat file terkompresi yang bertubuh kecil. Kegunaannya berkurang seiring dengan bertambahnya ukuran file terkompresi total.
Saya lebih suka tidak mengizinkan akses pihak ketiga ke Drive saya kecuali saya harus melakukannya, seperti Lucky 711 , saya menulis skrip saya sendiri. Saya meninggalkannya di sini untuk petualang hasil Google di masa depan. Ini akan menyalin folder dan semua isinya. Untuk kasus penggunaan saya, saya menulisnya untuk menangani file dengan banyak orangtua dengan hanya menambahkan folder yang disalin sebagai orangtua baru. Jika Anda tidak menginginkannya, lepas bagian "Hitung orang tua yang bukan orang tua ini".
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());
}
}
Sebagai referensi, jika Anda ingin membuat salinan file baru dengan banyak orang tua daripada hanya menambahkan folder baru sebagai orang tua lain, kode yang lebih pendek akan terlihat seperti ini:
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
kecuali semua tanda hubung adalah karakter. String omong kosong itu adalah ID unik yang diberikan Google. Setelah Anda memiliki tiga input, Anda akan memanggil fungsi ini dari fungsi lain dengan sesuatu seperticopyFolderAndContentsToFolder('superLongIdString','anotherLongIdString','NewFolderName')
countOfOtherParents++;
baris saja dan itu akan melakukannya. Untuk kasus penggunaan saya, saya secara eksplisit ingin file-file itu hanya mendapatkan orang tua lain daripada membuat salinan file baru. Jika yang Anda maksud adalah file yang bertindak sebagai hyperlink yang membuka folder lain, maka saya tidak tahu Anda bisa melakukannya.
Anda dapat menggunakan add-on " Salin Folder " untuk Google Spreadsheets:
Add-ons > Get add-ons
dan tambahkan add-on 'Copy Folder' Lihat tutorial video .
Atau, Google App Script Google App Store ini dapat digunakan untuk mencapai hasil ini. Yang ini tidak memerlukan pembuatan Google Spreadsheet.
Saya menggunakan beberapa mesin dan tidak ingin meletakkan aplikasi drive pada semuanya jadi saya telah menulis skrip di bawah ini untuk menyalin di situs. Ini jelek dan mendasar tetapi berhasil. Itu hanya menyalin folder dan file-nya, bukan sub folder. Saya yakin ada ruang untuk perbaikan, jadi jangan ragu untuk mengambil ini dan memperbaikinya, tapi saya harap itu setidaknya membantu sejak awal.
Per komentar di bawah, ini adalah Google Apps Script. Cara menggunakannya adalah membuka aplikasi skrip Google, lalu menyalin dan melewati semua kode ke skrip kosong. Setelah itu klik opsi terbitkan pada Menu, lalu pilih sebarkan sebagai aplikasi web. Anda kemudian dapat mengklik tautan kode terbaru atau menyalin dan menempel URL ke browser Anda. Kemudian, Anda akan menemukan kotak tempat Anda bisa mengetik folder yang ingin Anda salin, dan tombol salin. Itu akan membuat salinan folder yang Anda beri nama, dan salinan semua file di dalamnya.
Catatan: ini tidak akan menyalin sub-folder, hanya 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)
}
}
Untuk menduplikasi folder, seret & letakkan di folder lain yang menahan tombol CTRL.
Ini adalah aplikasi Makro Script Google yang sangat bagus: https://script.google.com/macros/s/AKfycbxbGNGajrxv-HbX2sVY2OTu7yj9VvxlOMOeQblZFuq7rYm7uyo/exec
dengan log waktu nyata dan pemilih folder.