Si compilas una interfaz de usuario para una secuencia de comandos, puedes publicarla como una app web. Por ejemplo, una secuencia de comandos que permita a los usuarios programar citas con miembros de un equipo de asistencia se presentaría mejor como una app web para que los usuarios puedan acceder a ella directamente desde sus navegadores.
Tanto las secuencias de comandos independientes como las secuencias de comandos vinculadas a aplicaciones de Google Workspace se pueden convertir en apps web, siempre que cumplan con los requisitos que se indican a continuación.
Requisitos para las apps web
Una secuencia de comandos se puede publicar como una app web si cumple con los siguientes requisitos:
- Contiene una función
doGet(e)
odoPost(e)
. - La función devuelve un objeto
HtmlOutput
de servicio HTML o un objetoTextOutput
de servicio de contenido.
parámetros de solicitud
Cuando un usuario visita una app o un programa le envía una solicitud HTTP GET
, Apps Script ejecuta la función doGet(e)
. Cuando un programa envía a la app una solicitud HTTP POST
, Apps Script ejecuta doPost(e)
en su lugar. En ambos casos, el argumento e
representa un parámetro de evento que puede contener información sobre cualquier parámetro de solicitud. La estructura del objeto de evento se muestra en la siguiente tabla:
Campos | |
---|---|
e.queryString |
Valor de la parte de la cadena de consulta de la URL o name=alice&n=1&n=2 |
e.parameter |
Objeto de pares clave-valor que corresponden a los parámetros de la solicitud. Solo se devuelve el primer valor para los parámetros que tienen varios valores. {"name": "alice", "n": "1"} |
e.parameters |
Es un objeto similar a {"name": ["alice"], "n": ["1", "2"]} |
e.pathInfo |
Es la ruta de URL después de |
e.contextPath |
No se usa, siempre es una cadena vacía. |
e.contentLength |
Longitud del cuerpo de la solicitud para las solicitudes POST o 332 |
e.postData.length |
Es igual a 332 |
e.postData.type |
Tipo de MIME del cuerpo de la solicitud POST text/csv |
e.postData.contents |
El texto del contenido del cuerpo de la solicitud POST Alice,21 |
e.postData.name |
Siempre es el valor "postData". postData |
Por ejemplo, puedes pasar parámetros como username
y age
a una URL, como se muestra a continuación:
https://script.google.com/.../exec?username=jsmith&age=21
Luego, puedes mostrar los parámetros de la siguiente manera:
function doGet(e) {
var params = JSON.stringify(e);
return ContentService.createTextOutput(params).setMimeType(ContentService.MimeType.JSON);
}
En el ejemplo anterior, doGet(e)
devuelve el siguiente resultado:
{
"queryString": "username=jsmith&age=21",
"parameter": {
"username": "jsmith",
"age": "21"
},
"contextPath": "",
"parameters": {
"username": [
"jsmith"
],
"age": [
"21"
]
},
"contentLength": -1
}
Implementa una secuencia de comandos como una aplicación web
Para implementar una secuencia de comandos como una aplicación web, sigue estos pasos:
- En la parte superior derecha del proyecto de secuencia de comandos, haz clic en Implementar > Nueva implementación.
- Junto a "Seleccionar tipo", haz clic en Habilitar los tipos de implementación > Aplicación web.
- Ingresa la información sobre tu app web en los campos de "Configuración de implementación".
- Haz clic en Implementar.
Puedes compartir la URL de la app web con quienes quieras que usen tu app, siempre y cuando les hayas otorgado acceso.
Prueba la implementación de una app web
Para probar tu secuencia de comandos como una app web, sigue estos pasos:
- En la parte superior derecha del proyecto de secuencia de comandos, haz clic en Implementar > Implementaciones de prueba.
- Junto a "Seleccionar tipo", haz clic en Habilitar los tipos de implementación > Aplicación web.
- Debajo de la URL de la app web, haz clic en Copiar.
Pega la URL en tu navegador y prueba tu app web.
Esta URL termina en
/dev
y solo pueden acceder a ella los usuarios que tienen acceso de edición a la secuencia de comandos. Esta instancia de la app siempre ejecuta el código guardado más recientemente y solo se destina a las pruebas durante el desarrollo.
Permisos
Los permisos de una app web varían según la forma en que elijas ejecutarla:
- Ejecutar la app como yo: En este caso, la secuencia de comandos siempre se ejecuta como tú, el propietario de la secuencia de comandos, sin importar quién acceda a la app web.
- Ejecutar la app como usuario que accede a la app web: En este caso, la secuencia de comandos se ejecuta con la identidad del usuario activo que usa la app web. Este enfoque de permisos hace que la app web muestre el correo electrónico del propietario de la secuencia de comandos cuando el usuario autoriza el acceso.
Incorpora tu app web en Google Sites
Para incorporar una app web en Google Sites, primero debe implementarse. También necesitas la URL implementada del diálogo Deploy
.
Para incorporar una aplicación web en una página de Sites, sigue estos pasos:
- Abre la página de Sites en la que deseas agregar la app web.
- Selecciona Insertar > URL de incorporación.
- Pega la URL de la app web y, luego, haz clic en AGREGAR.
La app web aparece en un marco en la vista previa de la página. Cuando publiques la página, es posible que los usuarios de tu sitio deban autorizar la app web antes de que se ejecute normalmente. Las apps web no autorizadas muestran mensajes de autorización al usuario.
Historial del navegador y apps web
Puede ser conveniente que una app web de Apps Script simule una aplicación de varias páginas o una con una IU dinámica controlada a través de parámetros de URL. Para hacerlo bien, puedes definir un objeto de estado que represente la IU o la página de la app, y enviar el estado al historial del navegador a medida que el usuario navega por tu app. También puedes escuchar los eventos del historial para que tu app web muestre la IU correcta cuando el usuario navegue hacia atrás y hacia adelante con los botones del navegador. Si consultas los parámetros de la URL en el momento de la carga, puedes hacer que tu app compile su IU de forma dinámica en función de esos parámetros, lo que permite que el usuario inicie la app en un estado particular.
Apps Script proporciona dos APIs de JavaScript asíncronas del cliente para ayudar a crear apps web vinculadas al historial del navegador:
google.script.history
proporciona métodos para permitir una respuesta dinámica a los cambios en el historial del navegador. Esto incluye insertar estados (objetos simples que puedes definir) en el historial del navegador, reemplazar el estado superior en la pila del historial y establecer una función de devolución de llamada del objeto de escucha para responder a los cambios del historial.google.script.url
proporciona los medios para recuperar los parámetros de URL y el fragmento de URL de la página actual, si están presentes.
Estas APIs de historial solo están disponibles para las apps web. No se admiten en barras laterales, diálogos ni complementos. Tampoco se recomienda usar esta función en apps web incorporadas en Google Sites.