En este artículo vemos como crear un menú personalizado en Google Sheets para poder llamar a nuestros códigos y macros de manera rápida.
Pueden ver este tutorial en video
Hay varias formas de ejecutar funciones personalizadas, macros o códigos de Google Apps Script (GAS). Entre ellos están:
- Un botón
- Desde el menú de macros (si son macros grabadas)
- Automáticamente:
- Al abrir un archivo
- Al editar algo del archivo
- A alguna hora del día
- Cuando se envíe un formulario
- Crear menús personalizados
Que es un menú personalizado
Un menú personalizado es básicamente una macro que se ejecuta al abrir un archivo específico y que nos da la posibilidad de ejecutar nuestras macros (de ese archivo) desde un menú nuevo que solo nos aparecerá en ese archivo.

Ventajas
- Es muy fácil ejecutarlo
- Se posiciona convenientemente
- Puedo ser muy descriptivo acerca de lo que hace
- Es muy fácil de ubicar
- Puedo categorizarlo en menús y submenús
- Puedo tener varios menús para ubicar diversas macros
Desventajas
- Mas de uno o dos menus ya no se van a ver
- No se puede ejecutar en un celular
Como crear un menú personalizado
Hay un par de maneras de crear un menú personalizado, todas a través de Google Apps Script.
Son esencialmente 4 pasos:
- Crear el menú
- Crear los ítems
- Agregar el menú as nuestra interfase
- Asegurarse que se ejecute al abrir el archivo
Crear el menú
Para crear el menú debemos acceder al método getUi() de nuestra hoja de cálculo.
Fíjense que esto es independiente de cualquier hoja individual. Es una propiedad de nuestro archivo
Una vez invoquemos el método getUi, llamamos el método createMenu, el cual recibe el título que queremos que aparezca en nuestro menú.
Una vez lo invoquemos lo vamos a guardar en una variable para diferenciar ese menú específico. A continuación un ejemplo:
var menu = SpreadsheetApp.getUi().createMenu("Mis funciones");
Crear los items
Después debemos agregar los ítems que van a aparecer o desplegar una vez dé clic sobre el menú. Esto lo hacemos con el comando addItem
addItem recibe dos argumentos: el título que vamos a mostrar en el ítem, y la función que vamos a ejecutar. Los dos van en comillas, y la función va sin paréntesis.
Obviamente la función ya debe estar creada.
Sigamos con nuestro ejemplo:
menu.addItem("Hacer algo", "miPrimeraFuncion");
Si tengo varias funciones que quiero ejecutar desde mi menú simplemente repito esta línea las veces que quiera, cambiando el nombre y la función.
Tengan en cuenta que el orden en que los creemos en nuestro código, será el código en el que aparecerán en nuestro menú.
Agregar el menú a la interfase
Ya tenemos creado el menú, pero no «le hemos dicho» a Sheets que lo incluya en nuestra interfase.
Esto se hace muy fácil con el método addtoUi dentro del mismo menú:
menu.addToUi();
Asegurarse que se ejecute al abrir
Para que nuestro menú se cree cada vez que yo abra mi archivo tengo que llamarlo desde un evento onOpen.
Tengo dos opciones entonces:
- Escribir todo el código dentro de una función onOpen
- Escribir el código en una función y después llamar esa función dentro de un onOpen
Yo prefiero la segunda. Es más robusta, ya que me permite llamar más menús y otras funciones potenciales en mi onOpen
¡Y listo! Ya con esto ya tenemos nuestro primer menú.
A continuación todo el código
//Ejecutar cada vez que se abra el archivo
function onOpen(){
crearMenu();
}
//crear nuestro menú
function crearMenu() {
//Creamos el menú
var menu = SpreadsheetApp.getUi().createMenu("Mis funciones");
//Añadimos los items con sus funciones
menu.addItem("Mi Primera función", "numeroUno");
menu.addItem("Mi segunda función", "numeroDos");
//Agregamos el menu
menu.addToUi();
}
function numeroUno(){
//Comandos
}
function numeroDos(){
//Comandos
}
Otras opciones
Con el código de arriba ya pueden crear sus primeros menús.
Sin embargo hay más cosas que podemos hacer dentro de nuestro menú
Submenús

Un submenú es un menú que aparece cuando me ubico sobre uno de los ítems de mi menú
Es básicamente un menú que de alguna manera agrego en mi menú principal
Para crear un submenu, seguimos los iguientes pasos
- Creamos un nuevo menú
- Creamos los ítems de este nuevo menú
- Agregamos este menú al menú principal
var menu2 = SpreadsheetApp.getUi().createMenu("Mi submenú");
menu2.addItem("Mi función específica", "nuevaFunción");
menu.addSubMenu(menu2);
Separadores
Cuando tengo varios ítems dentro de mi menú personalizado puedo querer usar un separador para tener diferentes categorías.
El separador se agrega con el método addSeparator desde nuestro menú y lo posicionamos después del ítem que queramos
menu.addSeparator();
Decorando nuestros menús
No hay mucho que podamos cambiar de nuestros menús en cuanto a formato (colores, fuentes, etc)
Lo que si podemos hacer para personalizar nuestros menús es usar emoticones o símbolos.
Simplemente desde nuestro mismo código podemos pegar el emoticón que queremos usar al lado del texto.
menu.addItem("Enviar 😊", "numeroUno");
menu.addItem("Programar ⌛", "numeroDos");
Conclusión
Como pueden ver, no es tan difícil agregar menús personalizados a nuestros archivos de Sheets. Es una manera muy fácil de tener todas nuestras macros y funciones personalizadas organizadas dentro de un solo repositorio, muy conveniente y fácil de usar.
También pudieron observar que no hay tantas opciones, lo que facilita su implementación
Cuéntenme en los comentarios si les ha sido útil usar menús personalizados.
Suscríbete para acceder al curso «Descubriendo el poder de Google Sheets» y empezar tu camino a la maestría de Sheets, Forms y Apps Script
Deja una respuesta