Чи можна дублювати папку на Диску Google?


44

Мені потрібно дублювати всю папку на своєму Диску Google раз на тиждень. У папці є близько 25 файлів. Який простий спосіб це зробити?


З веб-інтерфейсу я припускаю. Це буде академічно, якщо ви користуєтесь клієнтом і синхронізуєте папку на своєму ПК.
алей

Ви хочете просто створити резервну копію матеріалів у цій папці? чи ви намагаєтесь додати його до іншого облікового запису google? Вам потрібен весь вміст папки чи будуть робити лише покажчики?
Вільям

Мені потрібно було дублювати його, тому що я хочу мати на них різні дозволи, для цього мені потрібно мати окремі середовища. Але використання диска Google для ПК добре працювало!
Dude2012,

Скопіюйте плагін Chrome Folder: chrome.google.com/webstore/detail/copy-folder/…
Simon Woodside

Відповіді:


19

Якщо ви використовуєте програму Google Диск на своєму ПК, ви можете скопіювати та вставити папку в каталог Диска Google, і це скопіювало б її. Я не вірю, що це можливо зробити з веб-програми.


4
На жаль для користувачів Linux, до сьогодні Google не підтримує "Додаток Google Drive". Тому їм потрібно використовувати щось, що називається " grive "
iammilind

Чи перезавантажить всю нову папку до Інтернету, чи знає вона, що вміст папки однаковий і дублює її без повного повторного завантаження?
Джуліан

@Julian Я б припустив, що це перезавантажує всю справу.
ComputerLocus

Я щойно підтвердив, що він дійсно перезавантажує всі файли. Бампер.
Джуліан

без програми також можна натиснути правою кнопкою миші - завантажити папку як zip та перезавантажити її після
скасування функції

10

Написали сценарій додатків просто для вирішення цієї проблеми. Ви можете скопіювати будь-який вміст папки, а також структуру в ній. Сценарій допоможе усунути потребу в настільному додатку Google Drive. Додавши тригери, ви навіть можете автоматизувати процес.

Структура папок / скрипт вмісту GDrive Copy

Скопіюйте структуру папок на Диску Google

Будь ласка, запиши :

  • це також додає суфікс _copyдо всіх підпапок
  • Значення folder_you_want_copied_copyзнаходиться в найвищій батьківській ієрархії вашого Диска Google, тому якщо ви скопіювали підпапку свого накопичувача, під час копіювання він підніметься до найвищого рівня

Супер класна функція, яка працювала ідеально навіть для дуже великих папок із сотнями підпапок та тисячами файлів (деякі були дуже великими). Дякую, Шунмуг!
kubusz

3
також додає суфікс "_copy" до всіх підпапок, виходить!
манас

5

Якщо ви перебуваєте у веб-інтерфейсі Диска Google ...

  1. Створіть нову папку та назвіть її тим, що вам потрібно.

  2. Зайдіть у попередню папку, виберіть усі файли, клацніть правою кнопкою миші та натисніть копію.

  3. Виберіть усі копії, клацніть правою кнопкою миші та натисніть кнопку Перейти до. Виберіть Нову папку.

Зауважте, що цей метод не працює, якщо папка, яку ви хочете скопіювати, має підпапки.


4
У меню правої кнопки миші немає опції "копіювати". Є "зробити копію". Що ви маєте на увазі - зробіть копію всіх файлів, потім виділіть копії та перемістіть їх у нову папку.
Блістерські арахіси

Також потрібно перейменувати всі файли після переміщення їх у нову папку, щоб видалити префікс "Копія".
Том

Це призводить до того, що всі файли мають "Копію" з префіксом до імен файлів.
Ілля Лінн

@Blisterpeanuts Також немає "зробити копію", якщо ви хочете скопіювати папку - навіть якщо вона порожня. Прикро так, якщо ви хочете почати з шаблону порожніх імен каталогів
Майкл

Якщо ви переміщуєте групу файлів з перетягуванням і натисканням клавіші Ctrl, біля вказівника миші з'являється знак "+", і, здається, він працює, але "скопійовані" файли - це лише тверді посилання , вони мають однаковий ідентифікатор, і якщо ви видалите їх , вилучите як копію, так і оригінальний файл , який потрібно відновити після недавньої активності. AFAIK - це помилка на Google Диску.
Пабло А

3

Дуже пізно відповідь на ОП, і я думаю, що це навіть неможливо на момент запитання, але це те, що я роблю сьогодні:

  1. Виберіть папку, яку я хочу дублювати.
  2. Вторинно натисніть на нього, а потім у спливаючому меню виберіть "Завантажити"
  3. Попросіть мій браузер зберегти заархівований архів у тимчасовий каталог
  4. Витягніть папку з архіву та дайте їй нову назву
  5. Назад у Диску; натисніть на велику синю кнопку Нова кнопка та виберіть у спадному меню пункт "Завантаження папки".
  6. Назад у моєму комп’ютері; візьміть щойно названу папку та перетягніть її назад на Диск.
  7. Змити унітаз

Примітка. Це рішення, коли у вас багато маленьких файлів і підпапок, які разом створюють невеликий стислий файл. Це корисність зменшується у міру збільшення загального розміру стисненого файлу.


1
Основна проблема цього рішення - окрім очевидної необхідності мати достатньо місця для локального зберігання всього вмісту диска локально, удвічі (як стисненого, так і вилученого) - полягає в тому, що якщо він експортує всі документи Google у відповідний формат документа MS OpenOffice, а потім коли ви перезавантажуєте їх, вам доведеться конвертувати їх назад у формати Google і вирішувати всі проблеми форматування, які це спричиняє.
Гасс

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

Це вхідні дані - ідентифікатор папки, яку ви хочете скопіювати, ідентифікатор папки, в якій ви хочете створити копію, і ім'я, яке ви хочете мати. Щоб отримати ідентифікатор папки, перейдіть до неї та подивіться в кінці URL-адреси. Це, мабуть, щось на кшталт, 1jVlkj------------------------Gk3D7крім всіх тире - це символи. Цей шнур - це унікальний ідентифікатор, який присвоїв Google. Коли у вас є три входи, ви б викликали цю функцію з іншої функції з чимось на кшталтcopyFolderAndContentsToFolder('superLongIdString','anotherLongIdString','NewFolderName')
Engineer Toast

Це майже ідеально, але в моєму випадку у мене є файли, пов’язані з різними папками. Тож замість копіювання файлу він просто копіює посилання.
roydukkey

Якщо ви маєте на увазі файли, які існують у кількох місцях (тобто мають декількох батьків), це вирішено у публікації. Ви можете скопіювати countOfOtherParents++;лише рядок, і це буде зроблено. Для мого використання я явно хотів, щоб ці файли просто отримали іншого батьківського, а не створювали нову копію файлу. Якщо ви маєте на увазі файли, які діють як гіперпосилання, що відкривають інші папки, я не знав, що ви можете це зробити.
Інженер Тост

IE, мінімальна зміна була б такою, але "чистішим" кодом було б це
Інженер Тост

3

Ви можете використовувати надбудову " Копіювати папку " для електронних таблиць Google:

  1. створити електронну таблицю Google
  2. натисніть Add-ons > Get add-onsі додайте надбудову "Копіювати папку"
  3. виберіть папку, яку потрібно скопіювати
  4. зроблено

Дивіться відеоурок .

Або цей хромований веб-магазин Google App Script можна використовувати для досягнення цього результату. Цей не потребує створення електронної таблиці Google.


7
Це вимагає дозволити аддону "Переглянути та прочитати електронну пошту"
Майкл Коул

@MichaelCole, а також інші проблемні дозволи: керуйте електронними таблицями, завантажуйте довільні веб-сайти і ще гірше: офлайн-доступ. Я не рекомендую нікому встановлювати це, поки проблеми з дозволом не будуть усунені.
Гасс

Ах ... це сміливий Новий пост світу Cambridge analytica, у якому ми живемо зараз
абот

Керуйте електронними таблицями - додавати файл журналу електронних таблиць під час його роботи.
Аджай

@Ajay Це було моє погано. Дякуємо за повторне надсилання.
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-перетягування-падіння папки до декількох різних місць, потім створив файл у папці, і файл видно у кожному місці.
алей

Це вірно. Вони називають це "додавання папки"
th3an0maly

4
-1, не працює.
Печер'є

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.