ฉันสามารถทำสำเนาโฟลเดอร์ใน Google ไดรฟ์ได้หรือไม่


44

ฉันต้องทำซ้ำทั้งโฟลเดอร์ใน Google Drive ของฉันสัปดาห์ละครั้ง ในโฟลเดอร์มีไฟล์ประมาณ 25 ไฟล์ วิธีง่ายๆในการทำเช่นนี้คืออะไร?


จากเว็บอินเตอร์เฟสฉันถือว่า นี่จะเป็นข้อมูลเชิงวิชาการหากคุณใช้ไคลเอ็นต์และซิงค์กับโฟลเดอร์ในพีซีของคุณ
เบียร์

คุณต้องการสำรองข้อมูลในโฟลเดอร์นั้นหรือไม่? หรือคุณพยายามเพิ่มลงในบัญชี Google อื่นหรือไม่ คุณต้องการเนื้อหาทั้งหมดของโฟลเดอร์หรือเพียงแค่พอยน์เตอร์ทำ
วิลเลียม

ฉันต้องการทำซ้ำเพราะฉันต้องการสิทธิ์ที่แตกต่างกันสำหรับสิ่งนี้ฉันต้องแยกสภาพแวดล้อม แต่การใช้ google ไดรฟ์สำหรับพีซีทำงานได้ดี!
Dude2012

คัดลอกปลั๊กอินของปลั๊กอิน Chrome: chrome.google.com/webstore/detail/copy-folder/…
Simon Woodside

คำตอบ:


19

หากคุณใช้แอปพลิเคชัน Google Drive บนพีซีคุณสามารถคัดลอกและวางโฟลเดอร์ในไดเรกทอรี Google ไดรฟ์ซึ่งจะเป็นการคัดลอก ฉันไม่เชื่อว่าเป็นไปได้ที่จะทำสิ่งนี้จากเว็บแอปพลิเคชัน


4
น่าเสียดายสำหรับผู้ใช้ Linux จนถึงทุกวันนี้ Google ยังไม่รองรับ "แอปพลิเคชัน Google Drive" ดังนั้นพวกเขาจำเป็นต้องใช้สิ่งที่เรียกว่า " grive "
iammilind

มันจะอัปโหลดทั้งโฟลเดอร์ใหม่ไปยังเว็บหรือไม่หรือรู้ว่าเนื้อหาของโฟลเดอร์นั้นเหมือนกันและมันจะทำซ้ำโดยไม่มีการอัปโหลดใหม่ทั้งหมดหรือไม่
Julian

@ จูเลียนฉันจะสมมติว่ามัน reuploads สิ่งทั้งหมด
ComputerLocus

ฉันเพิ่งยืนยันว่ามันอัปโหลดไฟล์ทั้งหมดซ้ำอีกครั้ง คนเกียจคร้าน
Julian

หากไม่มีแอปพลิเคชันคุณสามารถคลิกขวาได้ - ดาวน์โหลดโฟลเดอร์เป็น zip และทำการอัปโหลดใหม่หลังจากยกเลิกการเก็บถาวร
kamidude

10

เขียนสคริปต์ของแอปเพื่อแก้ไขปัญหานี้ คุณสามารถคัดลอกเนื้อหาของโฟลเดอร์ใด ๆ รวมทั้งโครงสร้างในนั้น สคริปต์จะช่วยขจัดความต้องการแอปเดสก์ท็อป Google Drive ด้วยการเพิ่มทริกเกอร์คุณสามารถทำให้กระบวนการเป็นไปโดยอัตโนมัติ

GDrive คัดลอกโครงสร้างโฟลเดอร์ / สคริปต์เนื้อหา

คัดลอกโครงสร้างโฟลเดอร์ใน Google Drive

โปรดทราบ:

  • สิ่งนี้ยังเพิ่มคำต่อท้าย_copyให้กับโฟลเดอร์ย่อยทั้งหมด
  • The folder_you_want_copied_copyอยู่ในลำดับชั้นพาเรนต์สูงสุดของ Google ไดรฟ์ของคุณดังนั้นหากคุณคัดลอกโฟลเดอร์ย่อยของไดรฟ์ก็จะเพิ่มขึ้นไปถึงระดับสูงสุดเมื่อคัดลอก

คุณสมบัติสุดยอดเยี่ยมทำงานได้อย่างสมบูรณ์แบบแม้กระทั่งกับโฟลเดอร์ที่มีขนาดใหญ่มากมีโฟลเดอร์ย่อยหลายร้อยโฟลเดอร์และไฟล์หลายพันไฟล์ (บางไฟล์มีขนาดใหญ่เป็นพิเศษ) ขอบคุณ Shunmugh!
kubusz

3
ยังเพิ่มคำต่อท้าย "_copy" ให้กับโฟลเดอร์ย่อยทั้งหมด yikes!
มนัส

5

หากคุณอยู่ในเว็บอินเตอร์เฟสของ Google Drive ...

  1. สร้างโฟลเดอร์ใหม่และตั้งชื่อตามที่คุณต้องการ

  2. ไปที่โฟลเดอร์ที่มีอยู่แล้วเลือกไฟล์ทั้งหมดคลิกขวาและกดคัดลอก

  3. เลือกสำเนาทั้งหมดคลิกขวาแล้วกดไปที่ เลือกโฟลเดอร์ใหม่

โปรดทราบว่าวิธีนี้จะไม่ทำงานหากโฟลเดอร์ที่คุณต้องการคัดลอกมีโฟลเดอร์ย่อย


4
ไม่มีตัวเลือก "คัดลอก" ในเมนูคลิกขวา มี "ทำสำเนา" สิ่งที่คุณหมายถึงคือทำสำเนาไฟล์ทั้งหมดจากนั้นไฮไลต์สำเนาและย้ายไปยังโฟลเดอร์ใหม่
Blisterpeanuts

คุณต้องเปลี่ยนชื่อไฟล์ทั้งหมดหลังจากย้ายไปยังโฟลเดอร์ใหม่เพื่อลบคำนำหน้า "คัดลอก"
Tom

ซึ่งส่งผลให้ไฟล์ทั้งหมดที่มีคำว่า "คัดลอก" นำหน้าไปยังชื่อไฟล์
Elijah Lynn

@Blisterpeanuts นอกจากนี้ยังไม่มี "ทำสำเนา" หากคุณต้องการคัดลอกโฟลเดอร์ - แม้ว่าจะว่างเปล่า น่ารำคาญถ้าคุณต้องการเริ่มต้นด้วยเทมเพลตชื่อไดเรกทอรีว่างเปล่า
Michael

หากคุณย้ายกลุ่มของไฟล์ที่มีการลากและวางในขณะที่กด Ctrl จะปรากฏเครื่องหมาย "+" ใกล้กับตัวชี้เมาส์และดูเหมือนว่าจะทำงานได้ แต่ไฟล์ "คัดลอก" เป็นเพียงฮาร์ดลิงก์พวกเขามี ID เดียวกันและถ้าคุณลบพวกเขาจะลบ ทั้งการคัดลอกและไฟล์ต้นฉบับจำเป็นต้องกู้คืนจากกิจกรรมล่าสุด AFAIK นี่เป็นข้อบกพร่องใน Google Drive
Pablo A

3

คำตอบที่ล่าช้ามากสำหรับ OP และฉันคิดว่าไม่สามารถทำได้แม้ในเวลาที่ถาม แต่นี่คือสิ่งที่ฉันทำในวันนี้:

  1. เลือกโฟลเดอร์ที่ฉันต้องการทำซ้ำ
  2. คลิกรองจากนั้นเลือก "ดาวน์โหลด" จากเมนูป๊อปอัป
  3. ให้เบราว์เซอร์ของฉันบันทึกไฟล์บีบอัดซิปไปยังไดเรกทอรีชั่วคราว
  4. แตกโฟลเดอร์ออกจากไฟล์เก็บถาวรและตั้งชื่อใหม่
  5. ย้อนกลับไปในไดรฟ์; คลิกปุ่มใหม่สีน้ำเงินใหญ่และเลือก "อัปโหลดโฟลเดอร์" จากเมนูแบบเลื่อนลง
  6. กลับไปที่คอมพิวเตอร์ของฉัน คว้าโฟลเดอร์ชื่อใหม่แล้วลากกลับเข้าไปในไดรฟ์
  7. ล้างห้องน้ำ

หมายเหตุ: นี่เป็นวิธีการแก้ปัญหาเมื่อคุณมีไฟล์และโฟลเดอร์ย่อยจำนวนน้อยที่รวมกันเป็นไฟล์บีบอัดขนาดเล็ก มีประโยชน์ลดลงเมื่อขนาดไฟล์บีบอัดรวมเพิ่มขึ้น


1
ปัญหาหลักของการแก้ปัญหานี้ - นอกเหนือจากความต้องการที่ชัดเจนในการจัดเก็บเนื้อหาในไดรฟ์ของคุณในพื้นที่สองครั้ง (ทั้งที่ถูกบีบอัดและแตกไฟล์) - คือถ้ามันจะส่งออกเอกสาร Google ทั้งหมดไปยังรูปแบบเอกสาร MS OpenOffice ที่เหมาะสม เมื่อคุณโหลดใหม่คุณต้องแปลงกลับเป็นรูปแบบของ Google และจัดการกับปัญหาการจัดรูปแบบทั้งหมดที่เป็นสาเหตุ
Guss

3

ฉันชอบที่จะไม่อนุญาตให้บุคคลที่สามเข้าถึงไดรฟ์ของฉันเว้นแต่ฉันจะต้องทำเช่นนั้นเช่นLucky 711ฉันเขียนสคริปต์ของตัวเอง ฉันจะฝากไว้ที่นี่เพื่อนักผจญภัยผลลัพธ์ของ Google ในอนาคต มันจะคัดลอกโฟลเดอร์และเนื้อหาทั้งหมด สำหรับกรณีการใช้งานของฉันฉันเขียนมันเพื่อจัดการไฟล์ที่มีหลายพาเรนต์โดยเพียงแค่เพิ่มโฟลเดอร์ที่คัดลอกเป็นพาเรนต์ใหม่ หากคุณไม่ต้องการให้วางส่วน "นับจำนวนผู้ปกครองที่ไม่ใช่ผู้ปกครองนี้"

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

}

สำหรับการอ้างอิงหากคุณต้องการสร้างสำเนาไฟล์ใหม่ที่มีหลายพาเรนต์แทนที่จะเพิ่มเพียงโฟลเดอร์ใหม่เป็นพาเรนต์อื่นโค้ดที่สั้นกว่าจะมีลักษณะดังนี้:

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

}

คุณรันสคริปต์นี้อย่างไร หรือคุณจะรับพารามิเตอร์อินพุตได้อย่างไร
roydukkey

มันคืออินพุตคือ ID ของโฟลเดอร์ที่คุณต้องการคัดลอก ID ของโฟลเดอร์ที่คุณต้องการสร้างสำเนาและชื่อที่คุณต้องการคัดลอก ในการรับ ID โฟลเดอร์ให้ไปที่และดูที่ส่วนท้ายของ URL อาจเป็นอะไรก็ได้1jVlkj------------------------Gk3D7ยกเว้นว่าขีดคั่นทั้งหมดเป็นตัวอักษร สตริงซึ่งพูดพล่อยๆเป็น ID ที่ไม่ซ้ำที่ Google กำหนด เมื่อคุณมีสามอินพุตคุณจะเรียกใช้ฟังก์ชันนี้จากฟังก์ชั่นอื่นด้วยสิ่งที่คล้ายกันcopyFolderAndContentsToFolder('superLongIdString','anotherLongIdString','NewFolderName')
Engineer Toast

มันเกือบจะสมบูรณ์แบบ แต่ในกรณีของฉันฉันมีไฟล์ที่เชื่อมโยงไปยังโฟลเดอร์อื่น ดังนั้นแทนที่จะคัดลอกไฟล์มันเพียงแค่คัดลอกลิงก์
roydukkey

หากคุณหมายถึงไฟล์ที่มีอยู่ในหลายสถานที่ (เช่นมีพ่อแม่หลายคน) ที่อยู่ในการโพสต์ คุณสามารถคัดลอกcountOfOtherParents++;บรรทัดเท่านั้นและมันจะทำ สำหรับกรณีการใช้งานของฉันฉันต้องการไฟล์เหล่านั้นเพื่อรับพาเรนต์ใหม่แทนที่จะสร้างสำเนาใหม่ของไฟล์ หากคุณหมายถึงไฟล์ที่ทำหน้าที่เป็นไฮเปอร์ลิงก์ที่เปิดโฟลเดอร์อื่นฉันก็ไม่รู้ว่าคุณทำได้
Engineer Toast

IE การเปลี่ยนแปลงขั้นต่ำจะเป็นเช่นนี้แต่รหัส "สะอาดกว่า" จะเป็นเช่นนี้
Engineer Toast

3

คุณสามารถใช้โปรแกรมเสริม " คัดลอกโฟลเดอร์ " สำหรับ Google Spreadsheets:

  1. สร้าง Google Spreadsheet
  2. คลิกที่Add-ons > Get add-onsและเพิ่ม Add-on 'คัดลอกโฟลเดอร์'
  3. เลือกโฟลเดอร์ที่คุณต้องการคัดลอก
  4. เสร็จแล้ว

ดูวิดีโอสอน

หรือสามารถใช้Google App Script สำหรับ Chrome เว็บสโตร์เพื่อให้ได้ผลลัพธ์นี้ อันนี้ไม่จำเป็นต้องมีการสร้าง Google Spreadsheet


7
สิ่งนี้ต้องทำให้ addon "ดูและอ่านอีเมลของคุณ"
Michael Cole

@MichaelCole และสิทธิ์ที่มีปัญหาอื่น ๆ : จัดการสเปรดชีตโหลดเว็บไซต์ตามอำเภอใจและแย่กว่านั้นคือ: การเข้าถึงแบบออฟไลน์ ฉันไม่แนะนำให้ติดตั้งสิ่งนี้จนกว่าปัญหาการอนุญาตจะได้รับการแก้ไข
Guss

อ่า .. มันเป็นโพสต์ใหม่ที่กล้าหาญ Cambridge analytica world ที่เราอาศัยอยู่ในตอนนี้
abbood

จัดการสเปรดชีตคือการเพิ่มไฟล์บันทึกสเปรดชีตในขณะที่มันกำลังทำงานอยู่
Ajay

@Jay นั่นเป็นสิ่งที่ไม่ดีของฉัน ขอบคุณสำหรับการส่งใหม่
jonsca

1

ฉันใช้หลายเครื่องและไม่ต้องการใส่แอพไดรฟ์ลงในเครื่องทั้งหมดดังนั้นฉันจึงได้เขียนสคริปต์ด้านล่างเพื่อคัดลอกบนเว็บไซต์ มันน่าเกลียดและพื้นฐาน แต่ใช้งานได้ มันคัดลอกโฟลเดอร์และไฟล์ไม่ใช่โฟลเดอร์ย่อย ฉันแน่ใจว่ามีห้องพักสำหรับการปรับปรุงดังนั้นอย่าลังเลที่จะรับสิ่งนี้และปรับปรุงมัน แต่ฉันหวังว่าอย่างน้อยก็มีประโยชน์ตั้งแต่เริ่มต้น

ตามความคิดเห็นด้านล่างนี่เป็นสคริปต์ Google Apps วิธีใช้งานคือเปิดแอปสคริปต์ของ Google จากนั้นคัดลอกและวางรหัสทั้งหมดลงในสคริปต์เปล่า หลังจากนั้นคลิกตัวเลือกการเผยแพร่บนเมนูจากนั้นเลือกปรับใช้เป็นเว็บแอป จากนั้นคุณสามารถคลิกลิงก์รหัสล่าสุดหรือคัดลอกและวาง URL ลงในเบราว์เซอร์ของคุณ จากนั้นคุณจะพบกล่องที่คุณสามารถพิมพ์โฟลเดอร์ที่คุณต้องการคัดลอกและปุ่มคัดลอก ควรสร้างสำเนาของโฟลเดอร์ที่คุณตั้งชื่อและคัดลอกไฟล์ทั้งหมดภายใน

หมายเหตุ: มันจะไม่คัดลอกโฟลเดอร์ย่อยเพียงไฟล์

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

}

-1

หากต้องการทำซ้ำโฟลเดอร์ให้ลากและวางบนโฟลเดอร์อื่นที่ถือปุ่ม CTRL


9
ไม่ซ้ำกัน มันเพิ่งสร้างตัวชี้ ฉันทดสอบสิ่งนี้ด้วยการทำ Ctrl-drag-n-drop ของโฟลเดอร์ไปยังสถานที่ต่าง ๆ สองแห่งจากนั้นสร้างไฟล์ในโฟลเดอร์และไฟล์จะปรากฏในทุกที่
เบียร์

ถูกตัอง. พวกเขาเรียกมันว่า "การเพิ่มโฟลเดอร์"
th3an0maly

4
-1 ไม่ทำงาน
Pacerier

-1

นี่เป็นแอป Google Script Macros ที่ดีมาก: https://script.google.com/macros/s/AKfycbxbGNGajrxv-HbX2sVY2OTu7yj9VvxlOMOeQblZFuq7rYm7uyo/exec

พร้อมบันทึกตามเวลาจริงและตัวเลือกโฟลเดอร์


2
การเพิ่มส่วนสำคัญของลิงก์ลงในคำตอบจะมีประโยชน์มากขึ้น
serenesat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.