Siit juhendist leiad juhised kuidas skripti abil kopeerida isiklikust drive'st kaustapuu UT Google Workspace shared drive'i.
Google Workspace for Education on Tartu Ülikoolis juurutamises. See tähendab, et need teenused on kasutatavad ainult osaliselt ja ligipääs on piiratud. Samuti on käesolevad juhendid pidevalt täienemas ning muutumas. |
function start() {
//global variables to facilitate logging and email
//Edit these 3 lines:
var recipient1 = 'email@domain.xxx';
PropertiesService.getScriptProperties().setProperty('sourceFolderIdGlobal', 'sourcefolderID');
PropertiesService.getScriptProperties().setProperty('targetParentFolderIdGlobal', 'targetfolderID');
var recipient2 = recipient1;
PropertiesService.getScriptProperties().setProperty('StartTime', new Date()); //get timestamp to record the intial execution time
{
// Google App Script to the rescue
// Code adapted from this artcile https://www.labnol.org/code/19979-copy-folders-drive
// Thank you Amit Agarwal https://github.com/labnol
// This script will copy all files and folders from the source Folder ID to a Destination Folder ID
// The Source Folder name will be created in the destination folder
// If you have been driven insane by Google Drives inability to copy a folder structure from MyDrive to a Shared drive BOOM!
//
// Important note: Enable the Drive service in the script editor https://developers.google.com/apps-script/advanced/drive
var sourceFolderId = PropertiesService.getScriptProperties().getProperty('sourceFolderIdGlobal'); //Folder ID of the folder structure you want to copy
//Add target folder ID if you want the dest to be somewhere other than the root of Mydrive
var targetParentFolderId = PropertiesService.getScriptProperties().getProperty('targetParentFolderIdGlobal');
var sourceFolder = DriveApp.getFolderById(sourceFolderId); //Source Folder
if (targetParentFolderId.length > 0 ) {
// If the target folder ID has been provided, create the target folder within that folder
var targetParent = DriveApp.getFolderById(targetParentFolderId); //Parent Folder (target)
Logger.log( "Create target folder: " + sourceFolder.getName() + " in " + targetParent.getName()); //copy console entry into stored logger
var target = targetParent.createFolder(sourceFolder.getName()); //Create the source folder we are copying
} else {
// If the target folder ID is empty, create the target folder within the root of Mydrive
Logger.log( "Create target folder in Mydrive: " + sourceFolder.getName()); //copy console entry into stored logger
Logger.log( "Create target folder in Mydrive: " + sourceFolder.getName()); //copy console entry into stored logger
var target = DriveApp.createFolder(sourceFolder.getName()); //Create the source folder
}
//Here we go
Logger.clear; //Clear stored log data before next execution so we don't keep sending old data
var recipient = recipient1; //Destination email address to notify that script has started (for triggered executions)
var subject = 'MyDrive Copy Log';
var body = 'MyDrive Copy Started for folder pair: '+sourceFolderId+' to '+targetParentFolderId+"\n This script execution was started at "+ PropertiesService.getScriptProperties().getProperty('StartTime');
MailApp.sendEmail(recipient, subject, body);
copyFolder(sourceFolder, target);
Logger.log("Copy finish"); //copy console entry into stored logger
var recipient = recipient2; //Destination email address to send final completion notice and the logged console data
var subject = 'MyDrive Copy Log';
var body = 'MyDrive Copy finished at '+ new Date()+';'+" The execution log is as follows: \n" +Logger.getLog();
MailApp.sendEmail(recipient, subject, body);
}
}
function copyFolder(source, target) {
var folders = source.getFolders();
var files = source.getFiles();
while(files.hasNext()) {
var file = files.next();
Logger.log( "Copying file: " + file.getName()); //copy console entry into stored logger
file.makeCopy(file.getName(), target);
}
while(folders.hasNext()) {
var subFolder = folders.next();
var folderName = subFolder.getName();
Logger.log( "Copying folder: " + folderName); //copy console entry into stored logger
var targetFolder = target.createFolder(folderName);
copyFolder(subFolder, targetFolder);
}
} |