Registro

Cuando desarrollas cualquier tipo de app, es recomendable que registres información que te ayude diagnosticar fallas durante el desarrollo, identificar y diagnosticar problemas de los clientes y para otros fines.

Apps Script proporciona tres mecanismos diferentes para el registro:

  • El registro de ejecución de Apps Script integrado Este registro es ligero y se transmite en tiempo real, pero solo persiste durante un muy poco tiempo.

  • La interfaz de Cloud Logging en la de Google Play Developer Console, que proporciona registros que persisten durante muchos días después de su de la creación de cuentas de servicio.

  • La interfaz de Error Reporting en la Consola para desarrolladores, que recopila y registra los errores que se producen mientras se ejecuta la secuencia de comandos.

Estos se describen en las siguientes secciones. Además de estos mecanismos, también puedes crear tu propio código de registrador que, por ejemplo, escribe información a una hoja de cálculo de registro o la base de datos de JDBC.

Usa el registro de ejecución de Apps Script

Un enfoque básico para iniciar sesión en Apps Script es usar la interfaz registro de ejecución. Para ver estos registros, en la parte superior del editor, haz clic en Registro de ejecución. Cuando ejecutes una función o uses depurador, los registros se transmiten en tiempo real.

Puedes usar Logger o console en la un registro de ejecución integrado.

Estos registros están diseñados para verificaciones simples durante el desarrollo y la depuración. y no persisten por mucho tiempo.

Por ejemplo, considera la siguiente función:

utils/logging.gs
/**
 * Logs Google Sheet information.
 * @param {number} rowNumber The spreadsheet row number.
 * @param {string} email The email to send with the row data.
 */
function emailDataRow(rowNumber, email) {
  console.log('Emailing data row ' + rowNumber + ' to ' + email);
  try {
    const sheet = SpreadsheetApp.getActiveSheet();
    const data = sheet.getDataRange().getValues();
    const rowData = data[rowNumber - 1].join(' ');
    console.log('Row ' + rowNumber + ' data: ' + rowData);
    MailApp.sendEmail(email, 'Data in row ' + rowNumber, rowData);
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed with error %s', err.message);
  }
}

Cuando esta secuencia de comandos se ejecuta con las entradas "2" y "juan@example.com" el se escriben los siguientes registros:

[16-09-12 13:50:42:193 PDT] Envío de datos de la fila 2 por correo electrónico a john@example.com
[16-09-12 13:50:42:271 PDT] Datos de la fila 2: Costo 103.24

Cloud Logging

Apps Script también proporciona acceso parcial a Google Cloud Platform (GCP) Servicio de Cloud Logging. Cuando requieren registros que persisten durante varios días o necesitan registros más complejos para un entorno de producción multiusuario, Cloud Logging es la opción recomendada es tu mejor opción. Consulta Cuotas y límites de Cloud Logging. para la retención de datos y otros detalles de las cuotas.

Si necesitas más cuota de registros, puedes enviar una solicitud de cuota de Google Cloud Platform Para ello, es necesario que tengas acceso a la Proyecto de Cloud Platform que utiliza tu secuencia de comandos.

Usa Cloud Logging

Los registros de Cloud se vinculan al proyecto de Google Cloud asociada a tu Apps Script. Puedes ver una versión simplificada de estas registros en el panel de Apps Script.

Para aprovechar al máximo Cloud Logging y sus capacidades, usa un proyecto estándar de Google Cloud con tu proyecto de secuencia de comandos. Esto te permite acceder a los registros de Cloud directamente en el GCP Console y te ofrece más opciones de visualización y filtrado.

Cuando se realiza un registro, es una buena práctica de privacidad evitar grabar información del usuario, como direcciones de correo electrónico. Los registros de Cloud se etiquetada automáticamente con claves de usuario activas que puedes usar para localizar los mensajes de registro de un usuario específico cuando sea necesario.

Puedes registrar cadenas, cadenas con formato e incluso objetos JSON con el funciones que proporciona Apps Script Servicio console.

En el siguiente ejemplo, se muestra cómo usar console para registrar información en Cloud Operations.

utils/logging.gs
/**
 * Logs the time taken to execute 'myFunction'.
 */
function measuringExecutionTime() {
  // A simple INFO log message, using sprintf() formatting.
  console.info('Timing the %s function (%d arguments)', 'myFunction', 1);

  // Log a JSON object at a DEBUG level. The log is labeled
  // with the message string in the log viewer, and the JSON content
  // is displayed in the expanded log structure under "jsonPayload".
  const parameters = {
    isValid: true,
    content: 'some string',
    timestamp: new Date()
  };
  console.log({message: 'Function Input', initialData: parameters});
  const label = 'myFunction() time'; // Labels the timing log entry.
  console.time(label); // Starts the timer.
  try {
    myFunction(parameters); // Function to time.
  } catch (e) {
    // Logs an ERROR message.
    console.error('myFunction() yielded an error: ' + e);
  }
  console.timeEnd(label); // Stops the timer, logs execution duration.
}

Claves de usuario activas

Las claves de usuario activas temporales proporcionan una forma conveniente de detectar usuarios únicos en las entradas de los registros de Cloud sin revelar las identidades de esos usuarios. Claves se realizan por secuencia de comandos y cambian aproximadamente una vez al mes para proporcionar seguridad adicional si un usuario debe revelar su identidad a un desarrollador, por ejemplo, al informar un problema.

Las claves de usuario activas temporales son superiores a los identificadores de registro, como el correo electrónico direcciones porque:

  • No necesitas agregar nada a tus registros. ya están ahí.
  • No requieren la autorización del usuario.
  • Protegen la privacidad del usuario.

Para encontrar claves de usuario activos temporales en tus entradas de registro de Cloud, sigue estos pasos: Visualiza tus registros de Cloud en la consola de Google Cloud. Puedes hacer esto solo si tu proyecto de secuencia de comandos utiliza un proyecto estándar de Google Cloud a las que tienes acceso. Después de abrir el proyecto de Google Cloud en la consola, selecciona una entrada de registro de interés y expándela para ver metadatos > etiquetas > script.googleapis.com/user_key.

También puedes obtener la clave de usuario activo temporal llamando Session.getTemporaryActiveUserKey() en tu guion. Una forma de usar este método es mostrarle la clave al usuario mientras se ejecuta la secuencia de comandos. Luego, los usuarios pueden optar por incluir sus claves cuando informe problemas para identificar los registros relevantes.

Registro de excepciones

El registro de excepciones envía excepciones no controladas en el código del proyecto de la secuencia de comandos a Cloud Logging, junto con un seguimiento de pila.

Para ver los registros de excepciones, sigue estos pasos:

  1. Abre el proyecto Apps Script.
  2. A la izquierda, haz clic en Ejecuciones .
  3. En la parte superior, haz clic en Agregar filtro > Estado.
  4. Selecciona las casillas de verificación Error y Se agotó el tiempo de espera.

También puedes ver las excepciones registradas en GCP Console si tu proyecto de secuencia de comandos utiliza un proyecto estándar de Google Cloud a las que tienes acceso.

Habilitar el registro de excepciones

El registro de excepciones está habilitado de forma predeterminada para proyectos nuevos. Para habilitar la excepción registros de proyectos más antiguos, sigue estos pasos:

  1. Abre el proyecto de secuencia de comandos.
  2. A la izquierda, haz clic en Configuración del proyecto.
  3. Selecciona la casilla de verificación Registrar excepciones no detectadas en Cloud Operations.

Error Reporting

El registro de excepciones se integra automáticamente en Cloud Error Reporting, un servicio que agrega y muestra errores producidos en su secuencia de comandos. Puedes Visualiza tus informes de errores de Cloud en la consola de Google Cloud. Si se te solicita “Configurar Error Reporting” esto se debe a que tu secuencia de comandos aún no ha registrado ninguna excepción. No se requiere ninguna configuración más allá habilitar el registro de excepciones.

Requisitos de registro

No hay requisitos para usar el registro de ejecución integrado.

Puedes ver una versión simplificada de los registros de Cloud en la Panel de Apps Script: Sin embargo, para aprovecha al máximo Cloud Logging y Error Reporting, debes tener acceso al proyecto de GCP de la secuencia de comandos. Esto solo es posible si tu proyecto de secuencia de comandos usa un proyecto estándar de Google Cloud.