Что такое 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. Выберите данные, которые хотите визуализировать, и используйте Вставка > Диаграмма. Вы можете настроить тип диаграммы, оси и другие параметры для создания информативного представления данных.