es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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();
}
}
Tags:  , ,

Answer

  1. Avatar for 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órmula HYPERLINK con la URL de la carpeta existente.

Comments are closed.