Incluso el desarrollador más experimentado rara vez escribe código correctamente en el primer intento, lo que hace que la solución de problemas sea una parte importante del proceso de desarrollo. En esta sección, se describen técnicas para encontrar, comprender y depurar errores en tus secuencias de comandos.
Mensajes de error
Cuando tu secuencia de comandos encuentra un error, aparece un mensaje de error con un número de línea. Existen dos tipos básicos de errores: errores de sintaxis y errores de entorno de ejecución.
Errores de sintaxis
Los errores de sintaxis se producen cuando el código no sigue la gramática de JavaScript y se detectan cuando guardas la secuencia de comandos. Por ejemplo, el siguiente fragmento contiene un error de sintaxis:
function emailDataRow(rowNumber) {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var rowData = data[rowNumber-1].join(" ";
MailApp.sendEmail('john@example.com',
'Data in row ' + rowNumber,
rowData);
}
El problema es que falta un carácter ) al final de la línea 4. Cuando guardas la secuencia de comandos, aparece el siguiente error:
Falta ) después de la lista de argumentos. (línea 4)
Estos errores se encuentran de inmediato, lo que facilita la solución de problemas. Solo se guarda código válido en tu proyecto.
Errores de entorno de ejecución
Los errores de entorno de ejecución se producen cuando una función o clase se usa de forma incorrecta y se detectan cuando se ejecuta la secuencia de comandos. Por ejemplo, el siguiente código causa un error de entorno de ejecución:
function emailDataRow(rowNumber) {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var rowData = data[rowNumber-1].join(" ");
MailApp.sendEmail('john',
'Data in row ' + rowNumber,
rowData);
}
Si bien el código tiene el formato correcto, "john" es una dirección de correo electrónico no válida. Se arroja el siguiente error:
Correo electrónico no válido: john (línea 5)
Estos errores son difíciles de solucionar porque los datos suelen extraerse de fuentes externas, como hojas de cálculo o formularios. Usa técnicas de depuración para identificar la causa.
Errores comunes
A continuación, se incluye una lista de errores comunes y sus causas.
Servicio solicitado demasiadas veces: <action name>
Este error indica que superaste tu cuota diaria para una acción, como enviar demasiados correos electrónicos. Las cuotas varían según el tipo de cuenta y están sujetas a cambios. Consulta los límites en la documentación de cuotas de Apps Script.
El servidor no está disponible. o Se produjo un error en el servidor. Vuelve a intentarlo.
Las posibles causas incluyen las siguientes:
- Un servidor de Google no está disponible temporalmente. Espera y vuelve a intentarlo.
- Un error en tu secuencia de comandos no tiene un mensaje correspondiente. Intenta depurar para aislar el problema.
- Existe un error en Google Apps Script. Busca y envía informes de errores en Bugs.
Se requiere autorización para realizar esa acción.
La secuencia de comandos no tiene la autorización necesaria para ejecutarse. Cuando una secuencia de comandos se ejecuta desde un activador o como un servicio, no se puede presentar un diálogo de autorización.
Para autorizar la secuencia de comandos, abre el editor de secuencias de comandos y ejecuta cualquier función. Si la secuencia de comandos usa servicios nuevos no autorizados, debes volver a autorizarla.
Los activadores que se activan antes de la autorización o después del vencimiento suelen causar este error. Si un complemento causa esto, vuelve a usarlo para volver a autorizar. Quita los activadores problemáticos:
- En el proyecto de Apps Script, haz clic en Activadores .
- Junto al activador, haz clic en Más > Borrar activador.
Como alternativa, desinstala el complemento.
Los permisos detallados también pueden causar estos errores. Consulta la página de permisos de autorización para proteger las ejecuciones de activadores.
Acceso denegado: DriveApp o La política de dominio inhabilitó las aplicaciones de Drive de terceros
Los administradores de Google Workspace pueden inhabilitar la API de Drive para su dominio, lo que impide que los usuarios usen aplicaciones de Drive o complementos de Apps Script que usan el servicio de Drive.
Si un complemento o una aplicación web se publica para la instalación en todo el dominio y un administrador lo instala, la secuencia de comandos funciona incluso si la API de Drive está inhabilitada.
La secuencia de comandos no tiene permiso para obtener la identidad del usuario activo.
La identidad y el correo electrónico del usuario activo no están disponibles. Esto se debe a las llamadas
a Session.getActiveUser()
o Session.getEffectiveUser()
en modos de autorización que no sean AuthMode.FULL.
Si tu secuencia de comandos se ejecuta en un activador, puedes encontrar el modo de autorización en la
authMode propiedad del objeto de evento de Apps Script.
Soluciona este problema según el modo de autorización:
- En
AuthMode.FULL, considera usarSession.getEffectiveUser()en su lugar. - En
AuthMode.LIMITED, asegúrate de que el propietario haya autorizado la secuencia de comandos. - En otros modos de autorización, evita llamar a cualquiera de los métodos.
- Si eres cliente de Google Workspace que experimenta esta advertencia por primera vez desde un activador instalable, asegúrate de que el activador se ejecute como un usuario dentro de tu organización.
Falta la biblioteca
Es posible que se informe que falta una biblioteca si demasiadas personas acceden a ella de forma simultánea. Para solucionar el problema, sigue estos pasos:
- Copia el código de la biblioteca directamente en tu secuencia de comandos.
- Copia y, luego, implementa la biblioteca desde tu propia cuenta.
- Si la biblioteca no es necesaria para que funcione tu secuencia de comandos, quítala del proyecto de secuencia de comandos.
Se produjo un error debido a que faltaba una versión de la biblioteca o una versión de implementación. Código de error Not_Found
Este mensaje de error indica una de las siguientes opciones:
- Se borró la versión de la secuencia de comandos que usa una implementación. Para resolver este problema, edita la implementación y selecciona una versión diferente de la secuencia de comandos.
- Se borró una versión de la biblioteca que usa la secuencia de comandos. Para resolver este problema, en el editor de secuencias de comandos, en "Bibliotecas", busca la biblioteca y actualízala a una versión diferente o quítala. Para actualizar, haz clic en el número de versión y selecciona una versión diferente. Para quitar, haz clic en Más > Quitar.
- Una biblioteca incluye otra biblioteca, y se borró la versión de esa biblioteca. Para resolver este problema, comunícate con el autor de la biblioteca o usa una versión diferente de la biblioteca que usa tu secuencia de comandos.
Error 400: invalid_scope cuando se llama a la API de Google Chat con el servicio avanzado
Si encuentras Error 400: invalid_scope con el mensaje de error Some requested scopes cannot be shown, significa que no especificaste ningún permiso de autorización en el archivo appsscript.json del proyecto de Apps Script. En la mayoría de los casos, Apps Script determina automáticamente qué permisos necesita una secuencia de comandos, pero cuando usas el servicio avanzado de Chat, debes agregar manualmente los permisos de autorización que usa tu secuencia de comandos al archivo de manifiesto del proyecto de Apps Script. Consulta
Cómo configurar permisos explícitos.
Para resolver el error, agrega los permisos de autorización adecuados al archivo appsscript.json del proyecto de Apps Script como parte del array oauthScopes. Por ejemplo, para llamar al
spaces.messages.create
método, agrega lo siguiente:
"oauthScopes": [
"https://www.googleapis.com/auth/chat.messages.create"
]
El administrador no permite las llamadas de UrlFetch a <URL>
Los administradores de Google Workspace pueden usar una lista de entidades permitidas para controlar el acceso a dominios externos. Comunícate con tu administrador para agregar la URL a la lista de entidades permitidas.
Incumplimiento de la política de permisos
Este error se produce cuando una aplicación que usa
HTMLService intenta ejecutar APIs web que
requieren permisos sensibles, como navigator.mediaDevices.getUserMedia()
para el acceso a la cámara o al micrófono. El entorno de zona de pruebas de Apps Script restringe estas funciones para proteger la seguridad del usuario.
Aloja la funcionalidad que requiere estos permisos en un dominio independiente (fuera de Apps Script) y ábrela en una ventana o pestaña nueva. Luego, puedes publicar los datos o las respuestas capturadas en tu aplicación de Apps Script, como se muestra en este ejemplo.
Code.gs
function doGet(e) { return HtmlService.createHtmlOutputFromFile('Index') .setTitle('Media Devices Example'); } function processCameraData(data) { Logger.log('Received data from client-side: ' + data); // Process data as needed }
Index.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<button id="open-camera">Open Camera in New Window</button>
<script>
document.getElementById('open-camera').addEventListener('click', function() {
// URL for external domain handling camera access & posting data back.
// External page uses getUserMedia & window.opener.postMessage(...).
var externalUrl = 'https://your-external-domain.com/camera';
window.open(externalUrl, 'cameraWindow', 'width=600,height=400');
});
// Listen for messages from the external window.
window.addEventListener('message', function(event) {
// Check event.origin to ensure message is from the expected source.
if (event.origin !== 'https://your-external-domain.com') {
return;
}
console.log('Data received from external window:', event.data);
// Send data to server-side Apps Script.
google.script.run.processCameraData(event.data);
});
</script>
</body>
</html><Class> / Apiary.<Service Name> está inhabilitado. Comunícate con tu administrador para habilitarlo
Este error se produce cuando los administradores activaron la configuración avanzada para las regiones de datos. Algunas funciones de Apps Script dependen de servicios que procesan datos de forma global. Por lo tanto, es posible que algunos servicios no funcionen como se espera si deben cumplir con una política de la región de datos en particular. Si usas alguna clase de Apps Script o servicio avanzado que requiera procesamiento de datos global, es posible que tu secuencia de comandos encuentre un mensaje de error similar al de la siguiente captura de pantalla:

Depuración
Algunos errores son sutiles y no activan mensajes. Por ejemplo, es posible que tu código pueda ejecutarse, pero los resultados son inesperados. Usa las siguientes estrategias para investigar secuencias de comandos que se comportan de forma inesperada.
Logging
Registra información mientras se ejecuta una secuencia de comandos con el servicio de Cloud Logging o los servicios de Logger y console en el editor de secuencias de comandos.
Si tus administradores activaron la configuración avanzada para las regiones de datos y algunas de tus secuencias de comandos se crearon antes de 2018, es posible que veas un mensaje que indica que Cloud Logging se detuvo para el proyecto de Cloud asociado para cumplir con el requisito de regionalización de datos.

Error Reporting
Para usar Error Reporting en Google Cloud, usa un proyecto estándar administrado por el usuario en lugar de un proyecto predeterminado.
Cuando usas un proyecto estándar, los errores de entorno de ejecución se registran automáticamente en Google Cloud Error Reporting. Consulta los registros de Cloud y los informes de errores en la consola de Google Cloud.
Ejecuciones
Google Apps Script registra cada ejecución, incluidos los registros de Cloud. Para ver las ejecuciones, haz clic en Ejecuciones .
Verifica el estado del servicio
Consulta las interrupciones del servicio de Google Workspace en el Google Workspace Status Dashboard.
Usa el depurador y los puntos de interrupción
Para ubicar problemas en tu secuencia de comandos, puedes ejecutarla en modo de depuración. Cuando se ejecuta en modo de depuración, una secuencia de comandos se detiene cuando alcanza un punto de interrupción, que es una línea que destacaste en tu secuencia de comandos y que crees que puede tener un problema. Cuando una secuencia de comandos se detiene, muestra el valor de cada variable en ese momento, lo que te permite inspeccionar el funcionamiento interno de una secuencia de comandos sin tener que agregar muchas instrucciones de registro.
Agregar un punto de interrupción
Para agregar un punto de interrupción, coloca el cursor sobre el número de línea de la línea a la que deseas agregar el punto de interrupción. A la izquierda del número de línea, haz clic en el círculo. En la siguiente imagen, se muestra un ejemplo de un punto de interrupción agregado a una secuencia de comandos:

Ejecuta una secuencia de comandos en modo de depuración
Para ejecutar la secuencia de comandos en modo de depuración, en la parte superior del editor, haz clic en Depurar.
Antes de que la secuencia de comandos ejecute la línea con el punto de interrupción, se detiene y muestra una tabla de información de depuración. Puedes usar esta tabla para inspeccionar datos como los valores de los parámetros y la información almacenada en objetos.
Para controlar cómo se ejecuta la secuencia de comandos, en la parte superior del panel Depurador, usa los botones "Entrar", "Pasar por encima" y "Salir". Estos te permiten ejecutar la secuencia de comandos una línea a la vez y analizar cómo cambian los valores con el tiempo.
Error: No está disponible el código fuente de la línea actual

Este error aparece cuando no está disponible un archivo de depuración activo.
Google Apps Script no admite la visualización de secuencias de comandos de JavaScript (JS) generadas de forma dinámica en el editor de secuencias de comandos, como las que se generan con eval() y new Function(). Estas secuencias de comandos se crean y ejecutan dentro del motor V8, pero no se representan como archivos independientes en el editor.
Si ingresas en estas secuencias de comandos, encontrarás este error.
Por ejemplo, considera el siguiente código:
function myFunction() {
eval('a=2');
}
Cuando se invoca eval(), su argumento se trata como código JS y se ejecuta como una secuencia de comandos creada de forma dinámica dentro del motor V8. Si ingresas en eval(), aparecerá este error. Si la secuencia de comandos incluye un comentario //# sourceURL, su nombre se muestra en la pila de llamadas. De lo contrario, aparece como una entrada sin nombre.
A pesar del mensaje de error, la sesión de depuración permanece activa y la ejecución puede continuar. Para continuar, sigue ingresando, saliendo o reanudando la ejecución. Sin embargo, este error sigue apareciendo mientras la ejecución permanezca dentro del alcance de la secuencia de comandos dinámica. Después de que la ejecución salga de la secuencia de comandos dinámica, la depuración continúa sin este error.
Problemas con varias Cuentas de Google
Si accediste a varias Cuentas de Google al mismo tiempo, es posible que tengas problemas para acceder a tus complementos y aplicaciones web. El acceso múltiple o a varias Cuentas de Google a la vez no son compatibles con los proyectos, complementos y aplicaciones web de Apps Script.
Si abres el editor de secuencias de comandos de Apps Script mientras accedes a más de una cuenta, Google te pedirá que elijas la cuenta con la que deseas continuar.
Si abres una aplicación web o un complemento y tienes problemas de acceso múltiple, prueba una de las siguientes soluciones:
- Sal de todas tus Cuentas de Google y accede solo a la que tenga el complemento o la app web a la que deseas acceder.
- Abre una ventana de incógnito en Google Chrome o una ventana de navegación privada equivalente y accede a la Cuenta de Google que tenga el complemento o la app web a la que deseas acceder.
Cómo obtener ayuda
Visita nuestra página de asistencia para hacer preguntas o enviar errores.