Cuando se ejecuta el script de carpeta, sobrescribe los hipervínculos antiguos.
El siguiente script se utiliza para crear carpetas que se utilizan en proyectos.
El problema es que cuando se ejecuta el script por segunda vez, se eliminan los hipervínculos creados previamente la primera vez que se usó, pero las carpetas siguen existiendo en la carpeta principal.
Las carpetas aún existen, pero la celda cambia de =HYPERLINK(“insertar enlace de carpeta”, “J10447”) a =HYPERLINK(“undefined”, “J10447”)
function creatFolder() {
const parent = DriveApp.getFolderById("insertar ID de carpeta");
const sheet = SpreadsheetApp.getActive().getSheetByName('Detailing');
const range = sheet.getRange(2, 1, sheet.getLastRow() - 2);
range.getValues().forEach(function (row, index) {
// Consider checking if this r & c has a formula in the equal size array from getFormulas()
if(row[0]) {
var newLink = getLinkForFolderName_(parent, row[0]);
// Use the current array index to write this formula in only the correct cell.
range.offset(index, 0, 1).setFormula(
"HYPERLINK(\"" + newLink + "\", \"" + row[0] + "\")"
);
}
});
}
function getLinkForFolderName_(root, name) {
var folder;
const search = root.getFoldersByName(name);
if (search.hasNext()) {
folder = search.next();
if (search.hasNext())
console.warn("Existen varias carpetas con el nombre '" + name + "' en la carpeta raíz '" + root.getName() + "'");
}
else {
folder = root.createFolder(name);
["Presupuestos", "Dibujos de construcción", "Programa de Ventanas", "Archivo de Datos", "Fotos de Entrega"].forEach(function(e) {
folder.createFolder(e);
});
return folder.getUrl();
}
}
davy.ai
Parece que el problema es que la fórmula
HYPERLINK
no se está actualizando correctamente cuando se ejecuta el script por segunda vez. Para solucionarlo, podrías intentar añadir una comprobación para ver si la carpeta ya existe antes de crearla, y si lo hace, actualizar la fórmulaHYPERLINK
con la URL de la carpeta existente.