Autorización para los servicios de Google

Google Apps Script requiere la autorización del usuario para acceder a datos privados de los servicios integrados de Google o los servicios avanzados de Google.

Cómo funciona la autorización para los Servicios de Google

Cuando una secuencia de comandos requiere acceso a los servicios de Google, sigue este proceso general:

  1. Detección: Apps Script analiza la secuencia de comandos para identificar qué servicios usa (por ejemplo, SpreadsheetApp o GmailApp).
  2. Determinación del alcance: Según el análisis, Apps Script identifica un conjunto de permisos de OAuth necesarios para que se ejecute la secuencia de comandos.
  3. Verificación de autorización: Cuando se ejecuta la secuencia de comandos, se verifica si el usuario ya autorizó esos permisos.
  4. Mensaje para el usuario: Si falta la autorización, aparece un diálogo en el que se le solicita al usuario que otorgue permiso.
  5. Ejecución: Después de que se autoriza la secuencia de comandos, esta puede acceder a los datos solicitados para ese usuario.

Permisos y tipos de secuencias de comandos

La identidad del usuario con la que se ejecuta una secuencia de comandos, y, por lo tanto, los datos a los que puede acceder, varían según la situación en la que se ejecuta la secuencia de comandos, como se muestra en la siguiente tabla.

Tipo de secuencia de comandos La secuencia de comandos se ejecuta como…
Independiente, Complemento de Google Workspace o vinculado a Documentos, Hojas de cálculo, Presentaciones o Formularios de Google Usuario en el teclado
Función personalizada en una hoja de cálculo Usuario anónimo; sin embargo, los límites de cuota se aplican al usuario que está frente al teclado
App web o gadget de Google Sites Usuario en el teclado o propietario del script, según las opciones seleccionadas cuando se implementa la app
Activador instalable Usuario que creó el activador

Otorga derechos de acceso

Apps Script determina los alcances de autorización (como el acceso a tus archivos de Hojas de cálculo o Gmail) automáticamente, en función de un análisis del código. El código comentado aún puede generar una solicitud de autorización. Si una secuencia de comandos necesita autorización, aparecerá un diálogo de autorización cuando se ejecute.

Los secuencias de comandos que autorizaste anteriormente también solicitan autorización adicional si un cambio de código agrega servicios nuevos. Es posible que las secuencias de comandos no soliciten autorización si accedes a ellas como una app web que se ejecuta con la identidad de usuario del propietario de la secuencia de comandos.

Cómo revocar derechos de acceso

Para revocar el acceso de una secuencia de comandos a tus datos, sigue estos pasos:

  1. Visita la sección Seguridad de tu Cuenta de Google.
  2. En Tus conexiones con apps y servicios de terceros, haz clic en Ver todas las conexiones.
  3. Selecciona la secuencia de comandos o la app a la que quieras revocar el acceso.
  4. Haz clic en Borra todas las conexiones que tengas con APP_NAME y, luego, en Confirmar.

Limita el alcance al documento actual

Si compilas un complemento o cualquier otro script que use el servicio de hojas de cálculo, el servicio de documentos, el servicio de Presentaciones o el servicio de Formularios, puedes forzar el diálogo de autorización para que solo solicite acceso a los archivos en los que se usa el complemento o el script, en lugar de a todas las hojas de cálculo, documentos o formularios de un usuario. Para ello, incluye la siguiente anotación JSDoc en un comentario a nivel del archivo:

/**
 * @OnlyCurrentDoc
 */

Hay una anotación opuesta, @NotOnlyCurrentDoc, disponible si tu secuencia de comandos incluye una biblioteca que declara @OnlyCurrentDoc, pero la secuencia de comandos principal en realidad requiere acceso a más que el archivo actual.

Ciclo de vida de la autorización de complementos

Los complementos para Hojas de cálculo, Documentos, Presentaciones y Formularios generalmente siguen el mismo modelo de autorización que las secuencias de comandos vinculadas a un documento. Sin embargo, en ciertas circunstancias, sus funciones onOpen(e) y onEdit(e) se ejecutan en un modo sin autorización que presenta algunas complicaciones adicionales. Para obtener más información, consulta la guía del ciclo de vida de la autorización de complementos.

Límites de usuarios de aplicaciones de OAuth

Las aplicaciones que usan OAuth para acceder a los datos de los usuarios de Google, incluidos los proyectos de Apps Script, están sujetas a límites de autorización. Consulta Límites de usuarios de aplicaciones OAuth para obtener más detalles.

Comportamiento de reautenticación con Apps Script

Apps Script no aplica la frecuencia de reautenticación que se configura en la configuración del servicio de Google Cloud. Esto se debe a que Apps Script puede ejecutarse automáticamente con activadores, que funcionan sin interacción directa del usuario. Estas ejecuciones automáticas no activan las indicaciones para volver a autenticarse. Tu aplicación de Apps Script no te solicita automáticamente que te autentiques de nuevo después del período especificado (por ejemplo, 12 horas).

Cómo establecer permisos explícitos en el manifiesto

Apps Script determina automáticamente los permisos requeridos analizando el código en busca de llamadas a funciones. Si necesitas más control, puedes establecer los permisos de forma explícita en el manifiesto del proyecto (appsscript.json). Se recomienda hacerlo para los secuencias de comandos publicados y garantizar que uses los permisos mínimos requeridos.

Para obtener instrucciones, consulta Cómo establecer permisos explícitos.

Solución de problemas

  • Error"Se requiere autorización" cuando se ejecuta un activador: Los activadores deben estar autorizados por el usuario que los creó. Si agregas código que requiere permisos nuevos, debes ejecutar manualmente una función en el editor de secuencias de comandos una vez para activar el diálogo de autorización.
  • Los alcances no se actualizan: Si actualizaste tu código, pero el diálogo de autorización no refleja los cambios, intenta guardar el proyecto y actualizar el editor. Si usas permisos explícitos en el manifiesto, asegúrate de haber agregado el permiso nuevo al array oauthScopes.
  • Advertencia de "Se bloqueó esta app" o de app sin verificar: Esto ocurre si tu secuencia de comandos usa permisos sensibles o restringidos y Google no la verificó. Consulta Verificación de clientes de OAuth.