Los proyectos de Google Apps Script vinculados a Documentos, Hojas de cálculo o Formularios de Google pueden mostrar elementos de la interfaz de usuario, como alertas, mensajes, avisos, diálogos y barras laterales precompilados. Por lo general, estos elementos contienen contenido personalizado del servicio HTML y, a menudo, se abren desde elementos de menú. En Formularios, los elementos de la interfaz de usuario solo son visibles para un editor que abre el formulario para modificarlo, no para un encuestado.
Diálogos de alerta

Una alerta es un diálogo precompilado que se abre dentro de un editor de Documentos, Hojas de cálculo, Presentaciones o Formularios. Muestra un mensaje y un botón Aceptar ; un título y botones alternativos son opcionales. Es similar a llamar a
window.alert
en JavaScript del cliente dentro de un navegador web.
Las alertas suspenden la secuencia de comandos del servidor mientras el diálogo está abierto. La secuencia de comandos se reanuda después de que el usuario cierra el diálogo, pero JDBC no persisten durante la suspensión.
Como se muestra en el siguiente ejemplo, Documentos, Formularios,
Presentaciones y Hojas de cálculo usan el método
Ui.alert, que está disponible
en tres variantes. Para anular el botón Aceptar predeterminado, pasa un valor del
Ui.ButtonSet enum como el buttons
argumento. Para evaluar en qué botón hizo clic el usuario, compara el valor que muestra
para alert con el Ui.Button enum.
function onOpen() {
SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
.createMenu("Custom Menu")
.addItem("Show alert", "showAlert")
.addToUi();
}
function showAlert() {
const ui = SpreadsheetApp.getUi(); // Same variations.
const result = ui.alert(
"Please confirm",
"Are you sure you want to continue?",
ui.ButtonSet.YES_NO,
);
// Process the user's response.
if (result === ui.Button.YES) {
// User clicked "Yes".
ui.alert("Confirmation received.");
} else {
// User clicked "No" or X in the title bar.
ui.alert("Permission denied.");
}
}
Diálogos de mensajes

Un mensaje es un diálogo precompilado que se abre dentro de un editor de Documentos, Hojas de cálculo, Presentaciones o Formularios. Muestra un mensaje, un campo de entrada de texto y un botón Aceptar ; un título y botones alternativos son opcionales. Es similar a llamar a
window.prompt
en JavaScript del cliente dentro de un navegador web.
Los mensajes suspenden la secuencia de comandos del servidor mientras el diálogo está abierto. La secuencia de comandos se reanuda después de que el usuario cierra el diálogo, pero JDBC no persisten durante la suspensión.
Como se muestra en el siguiente ejemplo, Documentos, Formularios,
Presentaciones y Hojas de cálculo usan el método
Ui.prompt, que está
disponible en tres variantes. Para anular el botón Aceptar predeterminado, pasa un valor
del enum Ui.ButtonSet como el
buttons argumento. Para evaluar la respuesta del usuario, captura el valor que muestra
prompt, luego llama a
PromptResponse.getResponseText
para recuperar la entrada del usuario y compara el valor que muestra
PromptResponse.getSelectedButton
con el enum Ui.Button.
function onOpen() {
SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
.createMenu("Custom Menu")
.addItem("Show prompt", "showPrompt")
.addToUi();
}
function showPrompt() {
const ui = SpreadsheetApp.getUi(); // Same variations.
const result = ui.prompt(
"Let's get to know each other!",
"Please enter your name:",
ui.ButtonSet.OK_CANCEL,
);
// Process the user's response.
const button = result.getSelectedButton();
const text = result.getResponseText();
if (button === ui.Button.OK) {
// User clicked "OK".
ui.alert("Your name is " + text + ".");
} else if (button === ui.Button.CANCEL) {
// User clicked "Cancel".
ui.alert("I didn't get your name.");
} else if (button === ui.Button.CLOSE) {
// User clicked X in the title bar.
ui.alert("You closed the dialog.");
}
}
Avisos de hojas de cálculo
Un "aviso" es una pequeña ventana de diálogo en la esquina inferior derecha de un editor de Hojas de cálculo que muestra un mensaje, pero no suspende la secuencia de comandos. Es una buena manera de mostrar mensajes de estado o actualizaciones que no requieren la interacción del usuario.
Como se muestra en el siguiente ejemplo, Hojas de cálculo usa el método
Spreadsheet.toast.
Los avisos solo están disponibles en Hojas de cálculo.
function showToast() {
SpreadsheetApp.getActiveSpreadsheet().toast("Task completed successfully.");
}
Diálogos personalizados

Un diálogo personalizado puede mostrar una interfaz de usuario del servicio HTML dentro de un editor de Documentos, Hojas de cálculo, Presentaciones o Formularios.
Los diálogos personalizados no suspenden la secuencia de comandos del servidor mientras el diálogo está abierto.
Debido a que son asíncronos, la función del servidor que abre el diálogo finaliza de inmediato. Para pasar datos del diálogo personalizado al servidor,
usa la google.script API en tu
código del cliente.
El diálogo puede cerrarse llamando a
google.script.host.close
en el lado del cliente de una interfaz de servicio HTML. Otras interfaces no pueden cerrar el diálogo, solo el usuario o el diálogo mismo.
Como se muestra en el siguiente ejemplo, Documentos, Formularios,
Presentaciones y Hojas de cálculo usan el método
Ui.showModalDialog
para abrir el diálogo.
Code.gs
function onOpen() { SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .createMenu('Custom Menu') .addItem('Show dialog', 'showDialog') .addToUi(); } function showDialog() { const html = HtmlService.createHtmlOutputFromFile('Page') .setWidth(400) .setHeight(300); SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .showModalDialog(html, 'My custom dialog'); }
Page.html
Hello, world! <input type="button" value="Close" onclick="google.script.host.close()" />
Barras laterales personalizadas

Una barra lateral puede mostrar una interfaz de usuario del servicio HTML dentro de un editor de Documentos, Formularios, Presentaciones y Hojas de cálculo.
Las barras laterales no suspenden la secuencia de comandos del servidor mientras el diálogo está abierto. El
componente del cliente puede realizar llamadas asíncronas a la secuencia de comandos del servidor
con la google.script API para
interfaces de servicio HTML.
La barra lateral puede cerrarse llamando a
google.script.host.close
en el lado del cliente de una interfaz de servicio HTML. Otras interfaces no pueden cerrar la barra lateral, solo el usuario o la barra lateral misma.
Como se muestra en el siguiente ejemplo, Documentos, Formularios,
Presentaciones y Hojas de cálculo usan el método
Ui.showSidebar para abrir
la barra lateral.
Code.gs
function onOpen() { SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .createMenu('Custom Menu') .addItem('Show sidebar', 'showSidebar') .addToUi(); } function showSidebar() { const html = HtmlService.createHtmlOutputFromFile('Page') .setTitle('My custom sidebar'); SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .showSidebar(html); }
Page.html
Hello, world! <input type="button" value="Close" onclick="google.script.host.close()" />
Diálogos de apertura de archivos
Google Picker es una API de JavaScript que permite a los usuarios seleccionar o subir archivos de Google Drive. Usa la biblioteca de Google Picker en el servicio HTML para crear un diálogo personalizado que permita a los usuarios seleccionar archivos existentes o subir archivos nuevos y, luego, pasar la selección a tu secuencia de comandos.
Requisitos
El uso de Google Picker con Google Apps Script tiene varios requisitos:
Configura tu entorno para Google Picker.
Tu proyecto de secuencia de comandos debe usar un estándar proyecto de Google Cloud.
Pasa el mismo número de proyecto de Cloud a
PickerBuilder.setAppIdsi usas el alcancedrive.file.El manifiesto del proyecto de Apps Script debe especificar los alcances de autorización que requiere la API de Google Picker para que
ScriptApp.getOAuthTokenmuestre el token correcto paraPickerBuilder.setOauthtoken.Restringe la clave de API establecida en
PickerBuilder.setDeveloperKeya Apps Script. En Restricciones de aplicaciones, sigue estos pasos:- Selecciona URLs de referencia HTTP (sitios web).
- En Restricciones de sitios web, haz clic en Agregar un elemento.
- Haz clic en Referente y, luego, ingresa
*.google.com. - Agrega otro elemento y, luego, ingresa
*.googleusercontent.comcomo el referente. - Haz clic en Listo.
Llama a
PickerBuilder.setOrigin.
Ejemplo
En el siguiente ejemplo, se muestra Google Picker en Apps Script.