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:
- Detección: Apps Script analiza la secuencia de comandos para identificar qué servicios usa (por ejemplo,
SpreadsheetAppoGmailApp). - 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.
- Verificación de autorización: Cuando se ejecuta la secuencia de comandos, se verifica si el usuario ya autorizó esos permisos.
- Mensaje para el usuario: Si falta la autorización, aparece un diálogo en el que se le solicita al usuario que otorgue permiso.
- 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 o vinculado a Documentos, Hojas de cálculo, Presentaciones o Formularios | 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 automáticamente los alcances de autorización (como el acceso a tus archivos de Hojas de cálculo de Google o Gmail) en función de un análisis del código. El código que está comentado aún puede generar una solicitud de autorización. Si una secuencia de comandos necesita autorización, verás uno de los diálogos de autorización que se muestran aquí 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:
- Visita la página de permisos de tu Cuenta de Google. (Para navegar a esta página en el futuro, visita Google.com y, luego, haz clic en la foto de tu cuenta en la esquina superior derecha de la pantalla. A continuación, haz clic en Mi cuenta, luego en Apps y sitios conectados en la sección "Acceso y seguridad" y, luego, en Administrar apps.
- Haz clic en el nombre de la secuencia de comandos cuya autorización deseas revocar, luego, haz clic en Quitar a la derecha y, luego, en Aceptar en el diálogo resultante.
Limita el alcance al documento actual
Si compilas un complemento o cualquier otro código 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 código, 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
*/
Una anotación opuesta, @NotOnlyCurrentDoc, está 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 de Google 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 configures en la configuración de los servicios 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 pedirá automáticamente que te vuelvas a autenticar después del período que especificaste (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). Esto se recomienda para los secuencias de comandos publicados, para 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.