Menús personalizados en Google Workspace

Las secuencias de comandos pueden extender ciertos productos de Google agregando elementos de la interfaz de usuario que, cuando se hace clic en ellos, ejecutan una función de Google Apps Script. El ejemplo más común es ejecutar una secuencia de comandos desde un elemento de menú personalizado en Documentos, Hojas de cálculo, Presentaciones o Formularios de Google, pero las funciones de secuencias de comandos también se pueden activar haciendo clic en imágenes y dibujos en Hojas de cálculo.

Menús personalizados en Documentos, Hojas de cálculo, Presentaciones o Formularios

Apps Script puede agregar menús nuevos en Documentos, Hojas de cálculo, Presentaciones o Formularios, con cada elemento de menú vinculado a una función en una secuencia de comandos. (En Formularios, los menús personalizados solo son visibles para un editor que abre el formulario para modificarlo, no para un usuario que lo abre para responder).

Solo las secuencias de comandos vinculadas pueden crear menús. Para mostrar el menú cuando el usuario abre un archivo, escribe el código del menú dentro de una onOpen función.

En el siguiente ejemplo, se muestra cómo agregar un menú con un elemento, seguido de un separador visual y, luego, un submenú que contiene otro elemento. Cuando el usuario selecciona cualquiera de los elementos de menú, una función correspondiente abre un diálogo de alerta. Para obtener más información sobre los tipos de diálogos que puedes abrir, consulta la guía de diálogos y barras laterales.

function onOpen() {
  const ui = SpreadsheetApp.getUi();
  // Or DocumentApp, SlidesApp or FormApp.
  ui.createMenu('Custom Menu')
      .addItem('First item', 'menuItem1')
      .addSeparator()
      .addSubMenu(ui.createMenu('Sub-menu')
          .addItem('Second item', 'menuItem2'))
      .addToUi();
}

function menuItem1() {
  SpreadsheetApp.getUi() // Or DocumentApp, SlidesApp or FormApp.
      .alert('You clicked the first menu item!');
}

function menuItem2() {
  SpreadsheetApp.getUi() // Or DocumentApp, SlidesApp or FormApp.
      .alert('You clicked the second menu item!');
}

Un documento, una hoja de cálculo, una presentación o un formulario solo pueden contener un menú con un nombre determinado. Si la misma secuencia de comandos o cualquier otra agrega un menú con el mismo nombre, el menú nuevo reemplaza al anterior. Los menús no se pueden quitar mientras el archivo está abierto, aunque puedes escribir tu onOpen función para omitir el menú en el futuro si se establece una propiedad determinada.

Los complementos del editor también pueden tener elementos de menú, pero usan reglas especiales para definir cómo se definen.

Imágenes y dibujos en los que se puede hacer clic en Hojas de cálculo

También puedes asignar una función de Apps Script a una imagen o un dibujo en Hojas de cálculo, siempre que la secuencia de comandos esté vinculada a la hoja de cálculo. En el siguiente ejemplo, se muestra cómo configurarlo.

  1. En Hojas de cálculo, selecciona el elemento de menú Extensiones > Apps Script para crear una secuencia de comandos vinculada a la hoja de cálculo.
  2. Borra cualquier código que haya en el editor de secuencias de comandos y pega el código que se encuentra a continuación.
function showMessageBox() {
  SpreadsheetApp.getUi().alert('You clicked it!');
}
  1. Vuelve a Hojas de cálculo y selecciona Insertar > Imagen o Insertar > Dibujo para insertar una imagen o un dibujo.
  2. Después de insertar la imagen o el dibujo, haz clic en él. Aparecerá un pequeño selector de menú desplegable en la esquina superior derecha. Haz clic en él y elige Asignar secuencia de comandos.
  3. En el diálogo que aparece, escribe el nombre de la función de Apps Script que quieres ejecutar, sin paréntesis. En este caso, showMessageBox. Haz clic en Aceptar.
  4. Vuelve a hacer clic en la imagen o el dibujo. Ahora se ejecuta la función.

La ejecución de la secuencia de comandos solo se activa cuando se hace clic en la imagen o el dibujo en un navegador web. La secuencia de comandos no se ejecuta si se hace clic en la imagen o el dibujo en un dispositivo móvil.