Publica la secuencia de comandos como una app web si compilas una interfaz de usuario para ella. Por ejemplo, un script que permite a los usuarios programar citas con miembros de un equipo de asistencia es mejor presentarlo como una app web para que los usuarios accedan a él directamente desde sus navegadores.
Tanto los scripts independientes como los scripts vinculados a aplicaciones de Google Workspace se pueden convertir en apps web, siempre y cuando cumplan con los siguientes requisitos.
Requisitos para las apps web
Un lenguaje de secuencias de comandos se puede publicar como una app web si cumple con los siguientes requisitos:
- Contiene una función
doGetodoPost. - La función devuelve un objeto
HtmlOutputde servicio HTML o un objetoTextOutputde servicio de contenido.
Parámetros de solicitud
Cuando un usuario visita una app o un programa le envía a la app una solicitud HTTP GET, Google Apps Script ejecuta la función doGet. Cuando un programa envía a la app una solicitud HTTP POST, Apps Script ejecuta doPost 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 |
El 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 la 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 |
Pasa parámetros como username y age a una URL como la siguiente:
https://script.google.com/.../exec?username=jsmith&age=21
Muestra 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 devuelve el siguiente resultado:
{
"queryString": "username=jsmith&age=21",
"parameter": {
"username": "jsmith",
"age": "21"
},
"contextPath": "",
"parameters": {
"username": [
"jsmith"
],
"age": [
"21"
]
},
"contentLength": -1
}
El sistema reserva los siguientes nombres de parámetros, por lo que no se deben usar en los parámetros de URL ni en los cuerpos de POST:
csid
El uso de estos parámetros puede generar una respuesta HTTP 405 con el mensaje de error "Lo sentimos, el archivo que solicitaste no existe". Si es posible, actualiza tu secuencia de comandos para usar nombres de parámetros diferentes.
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.
Comparte la URL de la app web con quienes quieras que la usen, siempre y cuando les hayas otorgado acceso.
Las apps web implementadas en un dominio dejan de funcionar si su propiedad cambia a una unidad compartida o a una cuenta en un dominio diferente. Para corregir esto, el nuevo propietario o colaborador debe volver a implementar la app web en el nuevo dominio. Como alternativa, si la app web se vuelve a mover a su dominio original, comenzará a funcionar nuevamente para ese dominio sin necesidad de volver a implementarla.
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
/devy 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 está diseñada para realizar pruebas durante el desarrollo.
Para probar la función de OAuth granular en la app web, asegúrate de que tu proyecto no tenga ya algunas autorizaciones.
Para invalidar las autorizaciones existentes, usa ScriptApp.invalidateAuth.
En el caso de las apps web que ya se implementaron y se ejecutan con la identidad del usuario activo, modifica el campo executeAs de JSON en el manifiesto a USER_DEPLOYING.
Cuando implementes apps web para que se ejecuten como el desarrollador, ten mucho cuidado al controlar los tokens de OAuth obtenidos a través de ScriptApp.getOAuthToken. Estos tokens pueden otorgar a otras aplicaciones acceso a tus datos. Nunca los transmitas al cliente.
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 el 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.
Para evitar abusos, Apps Script impone límites en la frecuencia con la que los usuarios nuevos pueden autorizar una app web que se ejecuta como el usuario. Estos límites dependen, entre otros factores, de si la cuenta de publicación forma parte de un dominio de Google Workspace.
Colabora en apps web con una unidad compartida. Cuando se implementa una app web en una unidad compartida, si se elige la opción "Ejecutar como tú", la app web se ejecuta bajo la autoridad del usuario que la implementó (ya que no hay propietario del script).
Incorpora tu app web en Google Sites {:#embed-web-app}
Las apps web integradas siguen sujetas a permisos de acceso para evitar el uso malicioso. Si parece que tu app web integrada no funciona, verifica si los permisos establecidos por el propietario de la app web y el administrador del dominio permiten su uso.
Para incorporar una app web en Sites, primero se debe implementar. También necesitas la URL implementada del diálogo Implementar.
Para incorporar una app 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 con normalidad. Las apps web no autorizadas muestran mensajes de autorización al usuario.
Historial del navegador y apps web
Para simular una aplicación de varias páginas o una con una IU dinámica controlada con parámetros de URL, define un objeto de estado para representar la IU o la página de la aplicación, y envía el estado al historial del navegador a medida que el usuario navega por tu aplicación. Escucha los eventos del historial para que tu aplicación web muestre la IU correcta cuando el usuario navegue hacia atrás y hacia adelante con los botones del navegador. Cuando consultes los parámetros de URL en el tiempo de carga, haz que tu app compile dinámicamente su IU en función de esos parámetros, lo que permitirá 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.historyproporciona métodos para permitir una respuesta dinámica a los cambios en el historial del navegador. Esto incluye insertar estados (objetos simples que defines) 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.urlproporciona 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 Sites.