Bisakah saya menduplikasi folder di Google Drive?

44

Saya perlu menduplikasi seluruh folder di Google Drive saya seminggu sekali. Ada sekitar 25 file dalam folder tersebut. Apa cara mudah untuk melakukan ini?

Bung2012
sumber
Dari antarmuka web saya kira. Ini akan menjadi akademis jika Anda menggunakan klien dan menyinkronkan ke folder di PC Anda.
ale
apakah Anda ingin hanya mencadangkannya di folder itu? atau Anda mencoba menambahkannya ke akun google lain? Apakah Anda memerlukan seluruh isi folder atau hanya akan melakukan pointer?
William
Saya perlu menduplikasi karena saya ingin memiliki izin yang berbeda pada mereka, untuk ini, saya harus memiliki lingkungan yang terpisah. Tetapi menggunakan google drive untuk PC bekerja dengan baik!
Dude2012
Salin Plugin Plugin Chrome: chrome.google.com/webstore/detail/copy-folder/…
Simon Woodside

Jawaban:

19

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.

ComputerLocus
sumber
4
Sayangnya untuk pengguna Linux, hingga hari ini Google tidak memiliki dukungan untuk "Aplikasi Google Drive". Karenanya mereka perlu menggunakan sesuatu yang disebut " grive "
iammilind
Apakah ini akan mengunggah ulang seluruh folder baru ke web, atau apakah ia tahu bahwa isi folder itu identik dan duplikat tanpa mengunggah ulang sepenuhnya?
Julian
@ Julius Saya akan berasumsi bahwa itu mengunggah semuanya.
ComputerLocus
Saya baru saja mengkonfirmasi bahwa itu memang memuat ulang semua file. Kekecewaan.
Julian
tanpa aplikasi, juga memungkinkan untuk mengeklik kanan - mengunduh folder sebagai zip dan mengunggahnya kembali setelah dibatalkan pengarsipan
kamidude
10

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

Salin Struktur Folder di Google Drive

Tolong dicatat :

  • ini juga menambahkan akhiran _copyuntuk semua subfolder
  • Ini folder_you_want_copied_copyberada dalam hierarki induk tertinggi dari Google Drive Anda, jadi jika Anda menyalin subfolder drive Anda, drive itu akan menggelembung ke tingkat tertinggi saat disalin.
Shunmugh Sundaram
sumber
Fitur super cool, bekerja dengan sempurna bahkan untuk folder yang sangat besar dengan ratusan sub-folder dan ribuan file (ada yang ekstra besar). Shunmugh terima kasih!
kubusz
3
juga menambahkan akhiran "_copy" ke semua subfolder, ya!
manas
5

Jika Anda berada di antarmuka web Google Drive ...

  1. Buat folder baru dan beri nama apa yang Anda inginkan.

  2. Buka folder yang sudah ada, pilih semua file, klik kanan dan tekan copy.

  3. 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.

Brandon
sumber
4
Tidak ada opsi "salin" di menu klik kanan. Ada "buat salinan". Yang Anda maksud adalah, buat salinan semua file, lalu sorot salinannya dan pindahkan ke folder baru.
Blisterpeanuts
Anda juga perlu mengganti nama semua file setelah memindahkannya ke folder baru untuk menghapus awalan "Salin".
Tom
Ini menghasilkan semua file yang memiliki "Salin" diawali dengan nama file.
Elijah Lynn
@Blisterpeanuts Juga tidak ada "buat salinan" jika Anda ingin menyalin folder - meskipun kosong. Sangat mengherankan, jika Anda ingin memulai dengan templat nama direktori kosong
Michael
Jika Anda memindahkan sekelompok file dengan drag & drop sambil menekan Ctrl akan muncul tanda "+" di dekat pointer mouse dan tampaknya berhasil, tetapi file "yang disalin" hanyalah hardlink , mereka memiliki ID yang sama, dan jika Anda menghapusnya akan menghapus baik salinan itu maupun file aslinya , perlu dipulihkan dari aktivitas terbaru. AFAIK ini adalah bug di Google Drive.
Pablo A
3

Jawaban yang sangat terlambat untuk OP, dan saya pikir tidak mungkin pada saat bertanya, tapi inilah yang saya lakukan hari ini:

  1. Pilih folder yang ingin saya duplikat.
  2. Klik kedua di atasnya, lalu pilih "Unduh" dari menu pop-up
  3. Minta peramban saya menyimpan arsip zip ke direktori sementara
  4. Ekstrak folder dari arsip, dan berikan nama baru
  5. Kembali di Drive; klik tombol Baru biru besar, dan pilih "Unggah folder" dari menu drop down.
  6. Kembali di komputer saya; ambil folder yang baru bernama dan seret kembali ke Drive.
  7. Menyiram toilet

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.

Martin Bramwell
sumber
1
Masalah utama dari solusi ini - selain dari kebutuhan yang jelas untuk memiliki ruang yang cukup untuk menyimpan seluruh isi drive Anda secara lokal, dua kali (dikompresi dan diekstraksi) - adalah bahwa jika itu akan mengekspor semua dokumen Google ke format dokumen MS OpenOffice yang sesuai, dan kemudian ketika Anda memuatnya kembali, Anda harus mengubahnya kembali ke format Google dan menangani semua masalah pemformatan yang disebabkannya.
Guss
3

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());
  }

}
Toast insinyur
sumber
Bagaimana Anda menjalankan skrip ini? Atau, bagaimana Anda mendapatkan parameter input?
roydukkey
Inputnya adalah ID folder yang ingin Anda salin, ID folder yang ingin Anda buat salinannya, dan nama yang Anda inginkan untuk salinannya. Untuk mendapatkan ID folder, navigasikan ke folder itu dan lihat di akhir URL. Mungkin sesuatu seperti 1jVlkj------------------------Gk3D7kecuali 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')
Engineer Toast
Ini hampir sempurna, tetapi dalam kasus saya, saya memiliki file yang ditautkan ke folder berbeda. Jadi alih-alih menyalin file, itu hanya menyalin tautannya.
roydukkey
Jika Anda bermaksud file yang ada di beberapa lokasi (yaitu, memiliki beberapa orang tua), itu dibahas dalam posting. Anda dapat menyalin 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.
Engineer Toast
Yaitu, perubahan minimum akan menjadi ini tetapi kode "bersih" adalah ini
Engineer Toast
3

Anda dapat menggunakan add-on " Salin Folder " untuk Google Spreadsheets:

  1. buat Google Spreadsheet
  2. klik Add-ons > Get add-onsdan tambahkan add-on 'Copy Folder'
  3. pilih folder yang ingin Anda salin
  4. Selesai

Lihat tutorial video .

Atau, Google App Script Google App Store ini dapat digunakan untuk mencapai hasil ini. Yang ini tidak memerlukan pembuatan Google Spreadsheet.

abbood
sumber
7
Ini mengharuskan Anda untuk menambahkan "Lihat dan baca email Anda"
Michael Cole
@MichaelCole, dan juga izin bermasalah lainnya: kelola spreadsheet, muat situs web yang sewenang-wenang, dan yang lebih buruk: akses offline. Saya sarankan tidak ada yang menginstal ini sampai masalah izin diperbaiki.
Guss
Ah .. itu adalah dunia baru yang berani, dunia analitik Cambridge Cambridge tempat kita hidup sekarang
abbood
Kelola spreadsheet adalah untuk menambahkan file log spreadsheet saat sedang berjalan.
Ajay
@ Jay Itu buruk saya. Terima kasih telah mengirimkan kembali.
jonsca
1

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)
  }

}
Lucky 711
sumber
-1

Untuk menduplikasi folder, seret & letakkan di folder lain yang menahan tombol CTRL.

aborruso
sumber
9
Itu tidak duplikat; itu hanya membuat pointer. Saya menguji ini dengan melakukan Ctrl-drag-n-drop folder ke beberapa tempat yang berbeda, kemudian membuat file di folder, dan file tersebut terlihat di setiap tempat.
ale
Tepat sekali. Mereka menyebutnya "menambahkan folder"
th3an0maly
4
-1, tidak bekerja.
Pacerier