Мені потрібно дублювати всю папку на своєму Диску Google раз на тиждень. У папці є близько 25 файлів. Який простий спосіб це зробити?
Мені потрібно дублювати всю папку на своєму Диску Google раз на тиждень. У папці є близько 25 файлів. Який простий спосіб це зробити?
Відповіді:
Якщо ви використовуєте програму Google Диск на своєму ПК, ви можете скопіювати та вставити папку в каталог Диска Google, і це скопіювало б її. Я не вірю, що це можливо зробити з веб-програми.
Написали сценарій додатків просто для вирішення цієї проблеми. Ви можете скопіювати будь-який вміст папки, а також структуру в ній. Сценарій допоможе усунути потребу в настільному додатку Google Drive. Додавши тригери, ви навіть можете автоматизувати процес.
Структура папок / скрипт вмісту GDrive Copy
Будь ласка, запиши :
_copy
до всіх підпапокfolder_you_want_copied_copy
знаходиться в найвищій батьківській ієрархії вашого Диска Google, тому якщо ви скопіювали підпапку свого накопичувача, під час копіювання він підніметься до найвищого рівняЯкщо ви перебуваєте у веб-інтерфейсі Диска Google ...
Створіть нову папку та назвіть її тим, що вам потрібно.
Зайдіть у попередню папку, виберіть усі файли, клацніть правою кнопкою миші та натисніть копію.
Виберіть усі копії, клацніть правою кнопкою миші та натисніть кнопку Перейти до. Виберіть Нову папку.
Зауважте, що цей метод не працює, якщо папка, яку ви хочете скопіювати, має підпапки.
Дуже пізно відповідь на ОП, і я думаю, що це навіть неможливо на момент запитання, але це те, що я роблю сьогодні:
Примітка. Це рішення, коли у вас багато маленьких файлів і підпапок, які разом створюють невеликий стислий файл. Це корисність зменшується у міру збільшення загального розміру стисненого файлу.
Я вважаю за краще утримуватися від дозволу стороннім особам отримати доступ до мого Диска, якщо мені не доведеться цього робити, як 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());
}
}
1jVlkj------------------------Gk3D7
крім всіх тире - це символи. Цей шнур - це унікальний ідентифікатор, який присвоїв Google. Коли у вас є три входи, ви б викликали цю функцію з іншої функції з чимось на кшталтcopyFolderAndContentsToFolder('superLongIdString','anotherLongIdString','NewFolderName')
countOfOtherParents++;
лише рядок, і це буде зроблено. Для мого використання я явно хотів, щоб ці файли просто отримали іншого батьківського, а не створювали нову копію файлу. Якщо ви маєте на увазі файли, які діють як гіперпосилання, що відкривають інші папки, я не знав, що ви можете це зробити.
Ви можете використовувати надбудову " Копіювати папку " для електронних таблиць Google:
Add-ons > Get add-ons
і додайте надбудову "Копіювати папку" Дивіться відеоурок .
Або цей хромований веб-магазин Google App Script можна використовувати для досягнення цього результату. Цей не потребує створення електронної таблиці Google.
Я використовую декілька машин і не хочу розміщувати додаток для дисків на всіх, тому я написав сценарій нижче, щоб скопіювати його на сайті. Це некрасиво і просто, але це працює. Він копіює лише папку та її файли, а не підпапки. Я впевнений, що є можливість для вдосконалення, тому сміливо приймайте це та вдосконалюйте, але сподіваюся, що це принаймні корисно з самого початку.
Відповідно до коментаря нижче, це сценарій 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)
}
}
Щоб дублювати папку, перетягніть її в іншу папку, утримуючи кнопку CTRL.
Це дуже хороший додаток для макросів Google Script: https://script.google.com/macros/s/AKfycbxbGNGajrxv-HbX2sVY2OTu7yj9VvxlOMOeQblZFuq7rYm7uyo/exec
з журналами реального часу та селектором папок.