28 сентября 2015

Организуем регулярный сбор данных в Google SpreadSheet с помощью Apps Scripts на примере курса BitCoin

Зачастую возникает необходимость сбора данных или организации кэширующих баз (публичные сервисы подобного рода ограничивают количество запросов), но средств не хватает или использование полноценного сервера баз данных является нерентабельным.
В таких ситуациях можно использовать возможности Google Drive в связке с Google Apps Scripts.
Рассмотрим возможность периодического сбора данных на примере сбора статистики о курсе BitCoin

1. Написание сценария


Для начала рассмотрим простейший способ опроса источника данных (JSON) и занесения части полученных данных в таблицу в Google Drive.

!!! Предварительно необходимо создать таблицу
function getDataOfBTC() {

  var sheet = SpreadsheetApp.openById("FILE_ID"); //Открытие таблицы с ID
  var response = UrlFetchApp.fetch("https://blockchain.info/ru/ticker"); // Запрос на сервер для получения JSON с данными
  var json = response.getContentText(); // Получение текста из ответа сервера
  var data = JSON.parse(json); // Парсим JSON
  var n=sheet.getLastRow()+1; // Будем писать в строку, следующей за последней с данными
  var d = new Date(); // Получаем текущее время и дату
  sheet.getRange("A"+n).setValue(d); // В столбец A и строку n записываем дату
  sheet.getRange("B"+n).setValue(data.USD.last);// В столбец B и строку n записываем данные о курсе биткоин

}

Сценарий, необходимый для нашей задачи описан выше, для применения необходимо лишь заменить FILE_ID на ID вашей таблицы.

2. Автоматическое выполнение сценария

Google Scripts поддерживает автоматический запуск сценариев в том числе по временному интервалу.
Называется такая функция "триггер".
Найти триггера можно в меню Ресурсы->Триггера текущего проекта.

Выбираем функцию и настраиваем требуемую периодичность: в нашем случае 5 минут.

3. Запуск скрипта

Выполнение скрипта по триггеру должно запуститься автоматически, но так как он будет требовать разрешения, будут сыпаться ошибки, поэтому жмем на кнопку запустить и подтверждаем разрешения

4. Итог

В итоге в таблицу должны динамически добавляться данные и на основе этой таблички можно сделать красивую диаграмму или использовать данные в другом проекте, например в Android приложении.


P.S. Курс запрашивается с сервиса blockchain.info, история курса взята оттуда же.