Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save abdiasriver/6887bfac1d6c16e938bffda928314b85 to your computer and use it in GitHub Desktop.
Save abdiasriver/6887bfac1d6c16e938bffda928314b85 to your computer and use it in GitHub Desktop.
/*
Nota:
> Propietario actual debe tener permisos de EDITOR
> El Nuevo Propietario recibira un nuevo correo
*/
function changeOwnership() {
// folder principal de escaneado
var sourceID = "IDCARPETA"; // Cambiar IDCARPETA por el id de tu carpeta a escanear
// email del Propietario actual
var currentOwner = "usuario@gmail.com"; // Tu correo electronico gmail propietario actual de la carpeta
// email del nuevo Propietario
var newOwner = "destino@gmail.com"; // Correo electronico gmail del nuevo propietario
// Funcion para escanear sub-folders/files
folderAndFiles(sourceID, currentOwner, newOwner);
}
function folderAndFiles(sourceID, currentOwner, newOwner) {
// Obtener el folder principal
var folder = DriveApp.getFolderById(sourceID);
// escanear todos los archivos del folder principal
var files = folder.getFiles();
while(files.hasNext()) {
try {
// Obtener el siguiente next archivo en el folder
var file = files.next();
// Obtener el nombre del archivo
var fileName = file.getName();
// Mostrar Logger escaneado archivos
Logger.log('Escaneando: ' + fileName);
// Obtener el Propietario del archivo escaneado
var currentFileOwner = file.getOwner().getEmail();
// Comparar el Propietario del archivo escaneado al Propietario actual
if (currentFileOwner == currentOwner) {
// Si el Propietario del archivos escaneado es igual al actual , se cambia al nuevo Propietario
file.setOwner(newOwner);
}
else {
// Si el Propietario del archivos escaneado es diferente al actual, se deja igual
}
}
catch(e) {
Logger.log('Problema en: ' + fileName + e);
}
}
// Obtener todos los folders del principal
var childFolders = folder.getFolders();
while(childFolders.hasNext()) {
try {
// Obtener el next folder
var child = childFolders.next();
// Obtener el nombre del folder y mandar Logger
var childName = child.getName();
Logger.log('Escaneado Folder: ' + childName);
// Obtener el ID del folder
var childId = child.getId();
// Obtener el Propietario del subfolder
var currentChildOwner = child.getOwner().getEmail();
// Comparar el Propietario del folder escaneado al Propietario actual
if (currentChildOwner == currentOwner) {
// Cambiar el Propietario actual al nuevo
child.setOwner(newOwner);
}
else {
// Si el Propietario del archivos escaneado es diferente al actual, se deja igual
}
// pass Se reenvia la funcion ciclo pero con los subfolder a cambiar sub-files
folderAndFiles(childId, currentOwner, newOwner);
}
catch(e) {
Logger.log('Problema en Folder: ' + e);
}
}
// Cambiar propietario carpeta principal
folder.setOwner(newOwner);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment