Как просматривать журнал Google Apps Script: полное руководство

Что такое Google Apps Script и его применение

Google Apps Script (GAS) — это облачный язык сценариев, который позволяет автоматизировать задачи и расширять функциональность Google Workspace (ранее G Suite), включая Google Sheets, Docs, Forms, Gmail и другие сервисы. GAS используется для создания пользовательских функций, автоматизации рутинных операций, интеграции различных сервисов и построения веб-приложений непосредственно внутри экосистемы Google.

Важность журналирования при разработке скриптов

Журналирование (логирование) — это неотъемлемая часть разработки любого программного обеспечения, включая Google Apps Script. Оно позволяет отслеживать ход выполнения скрипта, выявлять ошибки и проблемы, а также анализировать производительность. Без эффективного журналирования отладка и поддержка скриптов становятся крайне затруднительными.

Обзор различных способов логирования в Apps Script

В Google Apps Script существует несколько способов логирования, каждый из которых имеет свои преимущества и недостатки:

Logger.log(): Простой и базовый метод для записи сообщений в журнал выполнения скрипта.

console.log(): Более продвинутый метод, использующий Stackdriver Logging (теперь Logging в Google Cloud Platform) для более гибкой фильтрации и анализа.

Logs API: Позволяет программно получать доступ к журналам и обрабатывать их.

Основные методы логирования: Logger.log() и console.log()

Использование Logger.log() для базового логирования

Logger.log() – это самый простой способ записи информации в журнал. Он идеально подходит для быстрого прототипирования и отладки небольших скриптов. Сообщения, записанные с помощью Logger.log(), можно просмотреть в редакторе Apps Script в разделе "Выполнение".

/**
 * Пример использования Logger.log() для записи различных типов данных.
 */
function logExample() {
  const name: string = "John Doe";
  const age: number = 30;
  const isStudent: boolean = false;
  const address: object = {city: "New York", country: "USA"};

  Logger.log("Имя: %s, Возраст: %d", name, age); // Форматированный вывод
  Logger.log("Студент: " + isStudent); // Конкатенация строк
  Logger.log(address); // Вывод объекта целиком
}

Применение console.log() и Stackdriver Logging

console.log() использует Stackdriver Logging (Logging в Google Cloud Platform), предоставляя более мощные инструменты для фильтрации, поиска и анализа журналов. Он особенно полезен для больших и сложных скриптов, требующих детального отслеживания.

Различия между Logger.log() и console.log(), когда какой метод использовать

Основное различие заключается в месте хранения журналов и возможностях их обработки. Logger.log() хранит журналы временно и предоставляет базовый интерфейс для просмотра. console.log() использует Stackdriver Logging, который предлагает расширенные возможности фильтрации, поиска и хранения журналов в течение длительного времени.

Использовать Logger.log() стоит для быстрой отладки и небольших скриптов. Для более сложных задач, требующих детального анализа, лучше использовать console.log().

Примеры использования обоих методов с различными типами данных (текст, числа, объекты)

/**
 * Пример использования console.log() для записи данных в Stackdriver Logging.
 */
function consoleLogExample() {
  const product: string = "AdWords Campaign";
  const impressions: number = 15000;
  const clicks: number = 500;
  const conversionRate: number = 0.03;

  console.log(`Продукт: ${product}, Показы: ${impressions}, Клики: ${clicks}, CR: ${conversionRate}`);

  const campaignData: object = {
    product: product,
    impressions: impressions,
    clicks: clicks,
    conversionRate: conversionRate
  };

  console.log({message: "Данные кампании", data: campaignData}); // Запись объекта с метаданными
}

Просмотр журналов выполнения скриптов

Доступ к Stackdriver Logging (Logging в Google Cloud Platform)

Чтобы получить доступ к Stackdriver Logging, перейдите в Google Cloud Platform (console.cloud.google.com), выберите свой проект (тот же, который используется для Apps Script) и найдите раздел "Logging". Убедитесь, что у вас есть необходимые права доступа.

Реклама

Фильтрация и поиск записей в журналах по дате, времени, уровню важности и тексту

В Stackdriver Logging можно использовать мощные фильтры для поиска нужных записей. Можно фильтровать по дате, времени, уровню важности (debug, info, warn, error) и тексту сообщения. Например, можно найти все записи с уровнем важности "error", содержащие текст "API limit".

Интерпретация журнальных записей: понимание формата и содержания сообщений

Журнальные записи обычно содержат информацию о времени записи, уровне важности, источнике (имя скрипта и функции) и самом сообщении. Важно понимать формат сообщений, чтобы быстро находить нужную информацию. Использование структурированных сообщений (например, JSON) упрощает анализ.

Использование Logs API для программного доступа к журналам

Logs API позволяет программно получать доступ к журналам и обрабатывать их. Это может быть полезно для автоматического мониторинга, анализа и агрегации журнальных данных.

/**
 * Пример получения последних 100 записей из Stackdriver Logging.
 */
function getLogs() {
  const projectId: string = ScriptApp.getProjectKey();
  const url: string = `https://logging.googleapis.com/v2/entries?filter=resource.type%3D%22gae_app%22%20resource.labels.module_id%3D%22default%22&pageSize=100&orderBy=timestamp%20desc&key=${YOUR_API_KEY}`;
  // Замените YOUR_API_KEY на ваш API ключ Google Cloud.

  const options: object = {
    "method": "get",
    "contentType": "application/json"
  };

  try {
    const response = UrlFetchApp.fetch(url, options);
    const jsonResponse = JSON.parse(response.getContentText());
    Logger.log(jsonResponse);
    return jsonResponse;
  } catch (e) {
    Logger.log("Error fetching logs: " + e);
    return null;
  }
}

Заметка: Для использования Logs API необходимо включить его в Google Cloud Platform и получить API ключ.

Продвинутые техники журналирования

Использование уровней логирования (debug, info, warn, error)

Использование уровней логирования позволяет классифицировать сообщения по степени важности. debug используется для отладочной информации, info для обычных сообщений, warn для предупреждений, а error для сообщений об ошибках. Это упрощает фильтрацию и анализ журналов.

Создание пользовательских форматов для журнальных записей

Для упрощения анализа можно создавать пользовательские форматы журнальных записей. Например, можно использовать JSON для структурированных данных или добавлять префиксы к сообщениям для указания источника.

Логирование исключений и ошибок для отладки скриптов

При возникновении исключений и ошибок важно записывать информацию об ошибке, стектрейс и контекст, в котором произошла ошибка. Это значительно упрощает отладку.

try {
  // Код, который может вызвать ошибку
  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NonExistentSheet").getRange("A1");
} catch (e) {
  console.error({message: "Ошибка при обращении к листу", error: e.stack});
}

Интеграция с внешними сервисами логирования (например, Sentry, DataDog)

Для более продвинутого мониторинга и анализа можно интегрировать Apps Script с внешними сервисами логирования, такими как Sentry или DataDog. Это позволяет получать уведомления об ошибках, анализировать тренды и строить дашборды.

Советы и рекомендации по эффективному журналированию

Стратегии организации журнальных записей для упрощения отладки

Используйте осмысленные сообщения.

Добавляйте контекст (например, ID записи, имя пользователя).

Используйте уровни логирования.

Форматируйте сообщения для упрощения чтения.

Оптимизация логирования для предотвращения переполнения журналов и замедления работы скриптов

Не логируйте слишком много информации в production.

Используйте условное логирование (например, логировать только в debug режиме).

Удаляйте старые журналы.

Примеры реальных сценариев использования журналирования в Apps Script

Отслеживание успешности отправки email рассылки.

Анализ частоты использования пользовательских функций в Google Sheets.

Мониторинг работы интеграций с внешними сервисами.

Выявление узких мест в производительности скриптов.

Распространенные ошибки при логировании и способы их избежать

Забывать добавлять контекст к сообщениям.

Логировать слишком много информации в production.

Не использовать уровни логирования.

Не обрабатывать исключения и ошибки.


Добавить комментарий