Apps web

Publica la secuencia de comandos como una app web si compilas una interfaz de usuario para ella. Por ejemplo, una secuencia de comandos que permite a los usuarios programar citas con miembros de un equipo de asistencia se presenta mejor como una app web para que los usuarios accedan a ella directamente desde sus navegadores.

Las secuencias de comandos independientes y las secuencias de comandos vinculadas a las aplicaciones de Google Workspace se pueden convertir en apps web, siempre que cumplan los siguientes requisitos.

Requisitos para las apps web

Una secuencia de comandos se puede publicar como una app web si cumple con estos requisitos:

Parámetros de solicitud

Cuando un usuario visita una app o un programa le envía una solicitud HTTP GET, Google Apps Script ejecuta la función doGet. Cuando un programa le 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 null si no se especifica ninguna cadena de consulta

name=alice&n=1&n=2
e.parameter

Un objeto de pares clave-valor que corresponden a los parámetros de solicitud. Solo se muestra el primer valor para los parámetros que tienen varios valores.

{"name": "alice", "n": "1"}
e.parameters

Un objeto similar a e.parameter, pero con un array de valores para cada clave

{"name": ["alice"], "n": ["1", "2"]}
e.pathInfo

La ruta de URL después de /exec o /dev. Por ejemplo, si la ruta de URL termina en /exec/hello, la información de la ruta es hello.

e.contextPath No se usa, siempre es la cadena vacía.
e.contentLength

La longitud del cuerpo de la solicitud para las solicitudes POST o -1 para las solicitudes GET

332
e.postData.length

Es igual a e.contentLength.

332
e.postData.type

El tipo de MIME del cuerpo de POST

text/csv
e.postData.contents

El texto de contenido del cuerpo de POST

Alice,21
e.postData.name

Siempre 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 muestra 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 y no se deben usar en los parámetros de URL ni en los cuerpos de POST:

  • c
  • sid

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 app web

Para implementar una secuencia de comandos como una app web, sigue estos pasos:

  1. En la parte superior derecha del proyecto de secuencia de comandos, haz clic en Implementar > Nueva implementación.
  2. Junto a "Seleccionar tipo", haz clic en Habilitar los tipos de implementación > App web.
  3. Ingresa la información sobre tu app web en los campos de "Configuración de implementación".
  4. Haz clic en Implementar.

Comparte la URL de la app web con las personas que deseas que la usen, siempre que les hayas otorgado acceso.

Las apps web implementadas en un dominio dejan de funcionar si su propiedad cambia a una unidad compartida o cuenta en un dominio diferente. Esto se puede corregir si el nuevo propietario o colaborador vuelve a implementar la app web en el dominio nuevo. Como alternativa, si la app web se vuelve a mover a su dominio original, comienza a funcionar nuevamente para ese dominio sin volver a implementarla.

Prueba una implementación de app web

Para probar tu secuencia de comandos como una app web, sigue los pasos que se indican a continuación:

  1. En la parte superior derecha del proyecto de secuencia de comandos, haz clic en Implementar > Prueba implementaciones.
  2. Junto a "Seleccionar tipo", haz clic en Habilitar los tipos de implementación > App web.
  3. En la URL de la app web, haz clic en Copiar.
  4. 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 está destinada a las pruebas durante el desarrollo.

Para probar la función de OAuth detallada en la app web, asegúrate de que tu proyecto aún no tenga algunas autorizaciones. Para invalidar las autorizaciones existentes, usa ScriptApp.invalidateAuth. En el caso de las apps web que ya están implementadas y se ejecutan con la identidad del usuario activo, modifica el campo executeAs JSON en el manifiesto a USER_DEPLOYING.

Cuando implementes apps web para que se ejecuten como el desarrollador, ten mucho cuidado cuando manejes los tokens de OAuth obtenidos a través de ScriptApp.getOAuthToken. Estos tokens pueden otorgar acceso a otras aplicaciones a tus datos. Nunca los transmitas al cliente.

Permisos

Los permisos de una app web difieren según la forma en que elijas ejecutar la app:

  • 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 el abuso, Apps Script impone límites en la velocidad a 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 la unidad compartida. Cuando se implementa una app web en una unidad compartida, si eliges "ejecutar como tú", la app web se ejecuta bajo la autoridad del usuario que la implementó (ya que no hay propietario de la secuencia de comandos).

Incorpora tu app web en Google Sites {:#embed-web-app}

Las apps web incorporadas aún están sujetas a permisos de acceso para evitar el uso malicioso. Si tu app web incorporada no parece funcionar, 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:

  1. Abre la página de Sites en la que deseas agregar la app web.
  2. Selecciona Insertar > Incorporar URL.
  3. 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 que vean tu sitio deban autorizar la app web antes de que se ejecute con normalidad. Las apps web no autorizadas presentan mensajes de autorización al usuario.

Apps web y el historial del navegador

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 app y envía el estado al historial del navegador a medida que el usuario navega por tu app. Escucha 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 URL en el tiempo de carga, haz que tu app compile de forma dinámica su IU en función de esos parámetros, lo que permite que el usuario inicie la app en un estado determinado.

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 enviar estados (objetos simples que defines) al 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 en el 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 del historial solo están disponibles para las apps web. No son compatibles con barras laterales, diálogos ni complementos. Tampoco se recomienda usar esta función en apps web incorporadas en Sites.