Solución de problemas

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Incluso el desarrollador más experimentado rara vez escribe código correctamente en la primera prueba, lo que hace que la solución de problemas sea una parte importante del proceso de desarrollo. En esta sección, abordaremos algunas técnicas que pueden ayudarte a encontrar, comprender y depurar errores en tus secuencias de comandos.

Mensajes de error

Cuando su secuencia de comandos encuentra un error, se muestra un mensaje de error. El mensaje incluye una línea que se usa para solucionar problemas. Hay dos tipos básicos de errores que se muestran de esta manera: errores de sintaxis y errores de entorno de ejecución.

Errores de sintaxis

Los errores de sintaxis se producen cuando se escribe código que no sigue la gramática de JavaScript y se detectan en cuanto intentas guardar la secuencia de comandos. Por ejemplo, el siguiente fragmento de código 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);
}

Aquí, el problema de sintaxis es que falta un carácter ) al final de la cuarta línea. Cuando intente guardar la secuencia de comandos, verá el siguiente error:

Falta ")" detrás de la lista de argumentos. (línea 4)

Por lo general, estos tipos de errores son fáciles de solucionar, ya que se encuentran de inmediato y suelen tener causas simples. No puedes guardar un archivo que contiene errores de sintaxis, lo que significa que solo se guarda código válido en tu proyecto.

Errores de entorno de ejecución

Estos errores se producen cuando se usa una función o clase de forma incorrecta y solo se pueden detectar una vez que se ejecuta la secuencia de comandos. Por ejemplo, el siguiente código genera 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);
}

El código tiene el formato correcto, pero pasamos el valor "john" de la dirección de correo electrónico cuando se llama a MailApp.sendEmail. Dado que esta no es una dirección de correo electrónico válida, se genera el siguiente error cuando se ejecuta la secuencia de comandos:

Correo electrónico no válido: john (line 5)

Lo que hace que estos errores sean más difíciles de solucionar es que, a menudo, los datos que pasas a una función no se escriben en el código, sino que se extraen de una hoja de cálculo, un formulario o de otra fuente de datos externa. Las técnicas de depuración que se muestran a continuación pueden ayudarte a identificar la causa de estos errores.

Errores comunes

A continuación, se muestra una lista de errores comunes y sus causas.

Servicio solicitado demasiadas veces: <action name>

Este error indica que excediste tu cuota diaria para una acción determinada. Por ejemplo, puedes encontrar este error si envías demasiados correos electrónicos en un solo día. Las cuotas se establecen en diferentes niveles para las cuentas de consumidor, dominio y Premier, y están sujetas a cambios en cualquier momento sin una notificación previa de Google. Puedes ver los límites de cuota para varias acciones en la documentación de cuotas de Apps Script.

El servidor no está disponible. o Se produjo un error de servidor. Vuelve a intentarlo.

Existen algunos motivos posibles para estos errores:

  • Un servidor o sistema de Google no está disponible temporalmente. Espera unos minutos y vuelve a ejecutar la secuencia de comandos.
  • Hay un error en tu secuencia de comandos que no tiene un mensaje de error correspondiente. Intenta depurar la secuencia de comandos y verifica si puedes aislar el problema.
  • Hay un error en Google Apps Script que causa este error. Para obtener instrucciones sobre cómo buscar y archivar informes de errores, consulta Errores. Antes de informar un error nuevo, busca si otros ya lo informaron.

Se requiere autorización para realizar esa acción.

Este error indica que la secuencia de comandos carece de la autorización necesaria para ejecutarse. Cuando se ejecuta una secuencia de comandos en el editor de secuencias de comandos o desde un elemento de menú personalizado, se presenta un diálogo de autorización al usuario. Sin embargo, cuando una secuencia de comandos se ejecuta desde un activador, se incorpora con una página de Google Sites o se ejecuta como un servicio, no se puede presentar el diálogo y se muestra este error.

Para autorizar la secuencia de comandos, abre el editor y ejecuta cualquier función. Aparecerá el mensaje de autorización para que puedas autorizar el proyecto de secuencia de comandos. Si la secuencia de comandos contiene servicios no autorizados nuevos, debes volver a autorizarla.

Este error suele producirse por activadores que se activan antes de que el usuario los autorice. Si no tienes acceso al proyecto de secuencia de comandos (por ejemplo, porque se produce un error para un complemento que usas), por lo general, puedes autorizar la secuencia de comandos mediante el complemento nuevamente. Si un activador se activa y genera este error, puedes quitar tus activadores de la siguiente manera:

  1. A la izquierda del proyecto de Apps Script, haz clic en Activadores .
  2. A la derecha del activador que deseas quitar, haz clic en Más > Delete trigger.

También puedes quitar los complementos problemáticos si desinstalas el complemento.

Acceso denegado: DriveApp o La política de dominio inhabilitó las apps de Drive de terceros

Los administradores de Google Workspace dominios pueden inhabilitar el SDK de Drive en su dominio, lo que impide que los usuarios instalen y usen apps de Google Drive. Esta configuración también evita que los usuarios puedan usar los complementos de Apps Script que usen el Servicio de Drive o el Servicio de Drive avanzado (incluso si la secuencia de comandos se autorizó antes de que el administrador inhabilitara el SDK de Drive).

Sin embargo, si un complemento o una aplicación web que usa el servicio de Drive se publica para la instalación en todo el dominio y el administrador lo instala para algunos o todos los usuarios del dominio, la secuencia de comandos funciona para esos usuarios, incluso si el SDK de Drive está inhabilitado en el dominio.

La secuencia de comandos no tiene permiso para obtener la identidad del usuario activo.

Indica que la identidad y el correo electrónico del usuario activo no están disponibles para la secuencia de comandos. Esta advertencia es el resultado de una llamada a Session.getActiveUser(). También puede ser el resultado de una llamada a Session.getEffectiveUser() si la secuencia de comandos se ejecuta en un modo de autorización distinto de AuthMode.FULL. Si se señala esta advertencia, las llamadas posteriores a User.getEmail() solo muestran ".

Hay varias formas de solucionar esta advertencia, según el modo de autorización en el que se ejecute la secuencia de comandos. El modo de autorización se expone en funciones activadas como la propiedad authMode del parámetro del evento e.

  • En AuthMode.FULL, considera usar Session.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 un Google Workspace cliente que experimenta esta advertencia desde un activador instalable, asegúrate de que el activador se ejecute como usuario dentro de tu organización.

Falta la biblioteca

Si agregas una biblioteca popular a tu secuencia de comandos, es posible que recibas un mensaje de error que indique que falta, aunque la biblioteca aparezca como una dependencia de tu secuencia de comandos. El motivo puede ser que demasiadas personas accedan a la biblioteca al mismo tiempo. Para evitar este error, prueba una de las siguientes soluciones:

  • Copia y pega el código de la biblioteca en la secuencia de comandos y quita la dependencia de la biblioteca.
  • Copia la secuencia de comandos de la biblioteca y, luego, impleméntala como una biblioteca desde tu cuenta. Asegúrate de actualizar la dependencia de tu secuencia de comandos original a la biblioteca nueva en lugar de la pública.

Depuración

No todos los errores generan un mensaje de error. Puede haber un error más leve en el que el código sea técnicamente correcto y pueda ejecutarse, pero los resultados no son lo que esperas. Estas son algunas estrategias para manejar esas situaciones y, luego, investigar más a fondo una secuencia de comandos que no se ejecuta de la manera esperada.

Registros

Durante la depuración, suele ser útil registrar información a medida que se ejecuta un proyecto de secuencia de comandos. Google Apps Script tiene dos métodos para registrar información: el servicio de Cloud Logging y los servicios de consola y registrador más básicos integrados en el editor de Apps Script.

Consulta la guía de Logging para obtener más detalles.

Error Reporting

Las excepciones que se producen debido a errores en el entorno de ejecución se registran de forma automática mediante el servicio Google Cloud Error Reporting. Este servicio te permite buscar y filtrar los mensajes de excepción que crea tu proyecto de secuencia de comandos.

Para acceder a Error Reporting, consulta Visualiza los registros de Cloud y los informes de errores en Google Cloud Platform Console.

Ejecuciones

Cada vez que ejecutas una secuencia de comandos, Apps Script realiza un registro de la ejecución, incluidos los registros de Cloud. Estos registros pueden ayudarte a comprender qué acciones realizó tu secuencia de comandos.

Para ver las ejecuciones de tu secuencia de comandos en el proyecto de Apps Script, a la izquierda, haz clic en Executions .

Verifica el estado del servicio de Apps Script

Aunque es raro, a veces, los servicios específicos de Google Workspace(como Gmail o Drive) tienen problemas temporales que pueden provocar interrupciones del servicio. Cuando esto ocurre, es posible que los proyectos de Apps Script que interactúen con estos servicios no funcionen como se espera.

Para verificar si hay una Google Workspace interrupción del servicio, consulta el Google Workspace Panel de estado. Si se está produciendo una interrupción, espera a que se resuelva o busca ayuda adicional en el Google Workspace Centro de ayuda o en la documentación de Google Workspace Problemas conocidos.

Cómo usar el depurador y los puntos de interrupción

Para encontrar 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 resaltaste en la secuencia de comandos que crees que puede tener un problema. Cuando se detiene una secuencia de comandos, se 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.

Agrega un punto de interrupción

Para agregar una interrupción, desplaza el cursor sobre el número de la línea a la que deseas agregar la 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 una interrupción agregada a una secuencia de comandos:

Agrega un punto de interrupción

Ejecuta una secuencia de comandos en modo de depuración

Para ejecutar la secuencia de comandos en modo de depuración, haga clic en Debug en la parte superior del editor.

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 del Depurador, usa los botones "Step in", "Step over" y "Step Out". Te permiten ejecutar la secuencia de comandos, una línea a la vez, y, también, inspeccionar cómo cambian los valores con el tiempo.

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 proyectos, complementos y aplicaciones web de Apps Script. El acceso múltiple o el acceso a varias Cuentas de Google a la vez no son compatibles con Apps Script, complementos ni aplicaciones web.

Para solucionar los problemas de acceso múltiple, prueba una de las siguientes soluciones:

  • Sal de todas tus Cuentas de Google y accede a la que tiene el proyecto, el complemento o la aplicación web de Apps Script a los que necesitas 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 tiene el proyecto, el complemento o la aplicación web de Apps Script a los que necesitas acceder.

Cómo obtener ayuda

La depuración de un problema mediante las herramientas y técnicas mencionadas anteriormente puede resolver una variedad de problemas, pero es posible que encuentres otros que requieran ayuda adicional. Consulta nuestra página de asistencia para obtener información sobre dónde hacer preguntas y archivar errores.