Как получить данные Yahoo Finance с помощью Google Apps Script?

Что такое Google Apps Script и зачем он нужен для работы с данными?

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

Преимущества использования Google Apps Script для получения данных с Yahoo Finance

Получение данных с Yahoo Finance через GAS предоставляет несколько преимуществ:

Автоматизация: Возможность автоматического сбора данных по расписанию (например, ежедневно или еженедельно).

Интеграция: Прямая интеграция данных с другими сервисами Google Workspace.

Кастомизация: Гибкость в настройке запросов и обработки данных под конкретные нужды.

Бесплатность: GAS является бесплатной платформой для разработки.

Обзор Yahoo Finance API (или альтернативных способов доступа к данным)

К сожалению, официального общедоступного API у Yahoo Finance нет. Однако, данные можно получать, используя так называемый скрейпинг веб-страниц или неофициальные API-обертки (которые могут быть нестабильными). В этой статье мы рассмотрим метод прямого запроса данных к Yahoo Finance. Важно учитывать, что структура веб-страниц Yahoo Finance может меняться, что потребует адаптации кода.

Настройка Google Apps Script для работы с Yahoo Finance

Создание нового проекта Google Apps Script

Откройте Google Sheets.

Выберите Инструменты > Редактор скриптов.

Откроется редактор Google Apps Script. Дайте проекту название (например, "Yahoo Finance Data").

Включение доступа к внешним API (если необходимо)

GAS автоматически предоставляет доступ к службе UrlFetchApp, поэтому дополнительные настройки не требуются.

Изучение структуры URL для запросов к Yahoo Finance

Прежде чем писать код, важно понимать, как формируются URL-адреса для запроса данных. Например, для получения исторических данных акции Apple (AAPL) можно использовать URL, подобный следующему (структура может измениться):

https://query1.finance.yahoo.com/v8/finance/chart/AAPL?interval=1d&range=1mo

В этом URL:

AAPL — тикер акции.

interval — интервал данных (например, 1d — один день).

range — период времени (например, 1mo — один месяц).

Получение исторических данных акций с Yahoo Finance

Написание функции для формирования URL запроса исторических данных

/**
 * Формирует URL для запроса исторических данных с Yahoo Finance.
 *
 * @param {string} ticker Тикер акции.
 * @param {string} interval Интервал данных (1d, 1wk, 1mo).
 * @param {string} range Период времени (1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max).
 * @return {string} URL для запроса.
 */
function buildHistoricalDataUrl(ticker: string, interval: string, range: string): string {
  const baseUrl = 'https://query1.finance.yahoo.com/v8/finance/chart/';
  return `${baseUrl}${ticker}?interval=${interval}&range=${range}`;
}

Отправка HTTP-запроса к Yahoo Finance с использованием UrlFetchApp

/**
 * Получает исторические данные с Yahoo Finance.
 *
 * @param {string} url URL для запроса.
 * @return {string} JSON-ответ от Yahoo Finance.
 */
function fetchData(url: string): string {
  try {
    const response = UrlFetchApp.fetch(url);
    return response.getContentText();
  } catch (e) {
    Logger.log(`Ошибка при запросе данных: ${e}`);
    return null;
  }
}
Реклама

Разбор JSON-ответа от Yahoo Finance

/**
 * Разбирает JSON-ответ от Yahoo Finance.
 *
 * @param {string} jsonResponse JSON-ответ в виде строки.
 * @return {object} Разобранный JSON-объект.
 */
function parseJsonResponse(jsonResponse: string): object {
  try {
    return JSON.parse(jsonResponse);
  } catch (e) {
    Logger.log(`Ошибка при разборе JSON: ${e}`);
    return null;
  }
}

Обработка ошибок и исключений при запросе данных

В коде выше предусмотрена обработка ошибок при запросе данных и разборе JSON. Важно логировать ошибки (Logger.log) для облегчения отладки. Рассмотрите возможность добавления дополнительных проверок, например, проверку статуса HTTP-ответа.

Получение данных о текущей цене акций и другой информации

Запрос данных о текущей цене акции (quote)

Для получения текущей цены акций можно использовать другой endpoint Yahoo Finance. URL будет выглядеть примерно так:
https://query1.finance.yahoo.com/v7/finance/quote?symbols=AAPL

Здесь AAPL — тикер акции. Функция для получения таких данных будет аналогична функции для исторических данных, но с другим URL.

Получение дополнительной информации об акции (например, объема торгов, капитализации)

JSON-ответ от Yahoo Finance содержит множество полей с информацией об акции. Проанализируйте структуру ответа, чтобы извлечь нужные вам данные (объем торгов, капитализацию и т.д.).

Обработка случаев отсутствия данных для определенных акций

Не все акции могут иметь данные на Yahoo Finance. Важно предусмотреть проверку наличия данных в JSON-ответе и обработку случаев, когда данные отсутствуют.

Примеры использования полученных данных в Google Sheets

Запись полученных данных в Google Sheet

/**
 * Записывает данные в Google Sheet.
 *
 * @param {string} spreadsheetId ID Google Sheet.
 * @param {string} sheetName Название листа.
 * @param {array} data Данные для записи.
 */
function writeDataToSheet(spreadsheetId: string, sheetName: string, data: any[][]) {
  const ss = SpreadsheetApp.openById(spreadsheetId);
  const sheet = ss.getSheetByName(sheetName);
  sheet.clearContents(); // Очистка листа перед записью
  sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
}

Автоматическое обновление данных с использованием триггеров Google Apps Script

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

В редакторе скриптов выберите Триггеры > Добавить триггер.

Настройте триггер для запуска вашей функции (например, mainFunction) по времени.

Визуализация данных: создание графиков и диаграмм на основе данных Yahoo Finance

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


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