Cómo crear un índice dinámico de pestañas en Google Sheets

En este tutorial te voy a mostrar cómo crear un índice dinámico de pestañas en Google Sheets usando Google Apps Script. La idea es que puedas tener una hoja que liste todas las pestañas de tu archivo automáticamente, y que este listado se actualice solo cuando agregues o elimines hojas. Además, cada nombre tendrá un enlace para que puedas navegar fácilmente a esa pestaña con un solo clic. Esto es súper útil para manejar archivos con muchas hojas y evitar perder tiempo buscando la pestaña correcta.

¿Qué vamos a lograr con este script?

Queremos que en una hoja llamada, por ejemplo, «Inicio» o «Índice», aparezca automáticamente una lista con los nombres de todas las pestañas del archivo, excepto la hoja del índice en sí. Además, cada nombre será un hipervínculo que nos lleve a esa pestaña. También vamos a crear un enlace dentro de cada hoja que permita volver fácilmente al índice. Finalmente, pondremos un botón para actualizar esta lista cuando se agreguen o eliminen hojas.

Paso 1: Crear la función para obtener los nombres de las hojas

Lo primero es obtener la lista de hojas del archivo. Para eso usamos el método getSheets() de SpreadsheetApp.getActiveSpreadsheet(). Esto nos devuelve un array con objetos tipo hoja.

var libro = SpreadsheetApp.getActiveSpreadsheet();
var hojas = libro.getSheets();

Pero estos objetos no son sólo nombres, así que tenemos que recorrerlos para extraer el nombre de cada hoja usando un ciclo for…of o forEach. Yo uso for…of para mayor claridad.

var nombresHojas = [];
for (var hoja of hojas) {
  nombresHojas.push(hoja.getName());
}

Esto nos da un array con los nombres, pero aún no los ponemos en la hoja índice.

Paso 2: Escribir los nombres en la hoja índice y evitar incluirla a ella misma

Supongamos que la hoja índice se llama «Inicio». Queremos que no aparezca en la lista. Entonces, dentro del ciclo, hacemos una condición para saltar esa hoja.

var nombreIndice = "Inicio";
var hojaIndice = libro.getSheetByName(nombreIndice);

// Limpiamos el contenido anterior, desde fila 2 para no borrar el título
hojaIndice.getRange(2; 1; hojaIndice.getLastRow(); 1).clearContent();

var fila = 2;
for (var hoja of hojas) {
  var nombre = hoja.getName();
  if (nombre !== nombreIndice) {
    hojaIndice.getRange(fila; 1).setValue(nombre);
    fila++;
  }
}

Con esto ya tenemos los nombres listados. Pero aún no son enlaces.

Paso 3: Crear hipervínculos para cada nombre de hoja

Para que cada nombre sea un enlace que nos lleve a la pestaña, usamos la función HIPERVINCULO de Sheets. El formato es HIPERVINCULO("#gid=ID"; "Nombre"), donde gid es el identificador único de la hoja.

Para obtener el gid, usamos getSheetId() de cada hoja.

for (var hoja of hojas) {
  var nombre = hoja.getName();
  if (nombre !== nombreIndice) {
    var gid = hoja.getSheetId();
    var formula = '=HIPERVINCULO("#gid=' + gid + '"; "' + nombre + '")';
    hojaIndice.getRange(fila; 1).setFormula(formula);
    fila++;
  }
}

Así creamos un enlace dinámico para cada hoja, que al hacer clic te lleva directamente a ella.

Paso 4: Agregar un enlace para «Volver al índice» en cada hoja

Podemos automatizar que en cada hoja aparezca un hipervínculo para regresar al índice. Por ejemplo, en la celda G20 de cada hoja ponemos un enlace que diga «Ir a Inicio».

for (var hoja of hojas) {
  var nombre = hoja.getName();
  if (nombre !== nombreIndice) {
    var formulaVolver = '=HIPERVINCULO("#gid=' + hojaIndice.getSheetId() + '"; "Ir a Inicio")';
    hoja.getRange("G20").setFormula(formulaVolver);
  }
}

Esto facilita la navegación de regreso al índice desde cualquier hoja.

Paso 5: Crear un botón para actualizar el índice

Finalmente, para no tener que entrar al editor de script cada vez que agregues o elimines hojas, insertamos un botón en la hoja índice que ejecute la función que actualiza el listado.

Para esto: Insertar > Dibujo > Botón, escribir «Actualizar índice», luego con clic derecho asignar la función del script que creaste (por ejemplo, indiceDinamico).

Así, cada vez que presiones el botón, la lista se actualizará automáticamente, mostrando las hojas actuales y sus enlaces.

Código completo y recomendaciones

El código completo está comentado para que puedas entender cada parte y modificarlo a tu gusto según el nombre de tu hoja índice o la celda donde quieras poner el enlace de vuelta.

Recuerda que para usar macros y scripts, debes otorgar permisos a tu archivo y que Google Sheets a veces requiere que la función HIPERVINCULO se escriba en inglés (HYPERLINK) dentro del código para que funcione correctamente.

Este método es ideal para archivos con muchas pestañas y para mantener tu navegación organizada y rápida.

Si quieres profundizar más en la automatización con Google Apps Script y crear soluciones personalizadas para Google Sheets, te recomiendo inscribirte en mi academia online donde tenemos cursos completos y soporte personalizado.

Conclusión

En este tutorial aprendiste a crear un índice dinámico de pestañas en Google Sheets con enlaces para navegar fácilmente entre ellas. Vimos cómo obtener los nombres de las hojas, cómo excluir la hoja índice, cómo crear hipervínculos para cada hoja, y cómo agregar un enlace de vuelta al índice en cada pestaña. También aprendimos a crear un botón para actualizar el índice con un solo clic. Todo esto mejora mucho la usabilidad de archivos con muchas hojas y te ahorra tiempo.

Como siguientes pasos, puedes agregar validaciones, personalizar la ubicación de los enlaces o incluso automatizar la actualización con triggers de tiempo. Si quieres aprender todo esto y más, te invito a explorar mis cursos en la academia JuanSGuzman.

Si quieres aprender a usar Google Forms y Google Sheets desde cero, te invito a tomar un curso gratis de 2 horas.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

JuanSGuzman
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.