Gambler <osaengine.ru>
Gambler <osaengine.ru> личный блог
02 августа 2024, 20:07

Импорт данных с Московской биржи в Google Sheets

Привет, друзья!

По мотивам поста от Тимофея о том, насколько полезен ChatGPT в нашей жизни. Все освоил за 5 минут! Далее статья с решением, которую я опубликовал на своем сайте https://osaengine.ru/2024/08/02/%D1%83%D1%87%D0%B8%D0%BC-smartlab-chatgpt.html

Импорт данных с Московской биржи в Google Sheets

Шаг 1: Создание нового документа в Google Sheets

Первым шагом необходимо создать новый документ Google Sheets. Перейдите на сайт Google Sheets и создайте новый документ или откройте существующий.

Шаг 2: Открытие редактора сценариев

В вашем документе Google Sheets перейдите в меню “Расширения” и выберите “Apps Script”. Это откроет редактор сценариев, где вы сможете написать и выполнить скрипт для импорта данных.

Шаг 3: Написание скрипта для импорта данных

В редакторе сценариев удалите все существующие скрипты и вставьте следующий код:

<code>function importMoexData() {
  var url = 'https://iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml';
  try {
    var response = UrlFetchApp. <a name="cut"></a> fetch(url);
    var xml = response.getContentText();
    var document = XmlService.parse(xml);
    var root = document.getRootElement();
    var dataElements = root.getChildren('data');
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    sheet.clear();

    dataElements.forEach(function(dataElement) {
      var rows = dataElement.getChild('rows').getChildren('row');

      // Добавляем заголовки
      if (rows.length > 0) {
        var headers = rows[0].getAttributes().map(function(attr) {
          return attr.getName();
        });
        sheet.appendRow(headers);
      }

      // Добавляем данные
      rows.forEach(function(row) {
        var data = row.getAttributes().map(function(attr) {
          var value = attr.getValue();
          // Заменяем точки на запятые в значениях
          if (!isNaN(value.replace('.', '').replace(',', ''))) {
            value = value.replace('.', ',');
          }
          return value;
        });
        sheet.appendRow(data);
      });
    });
  } catch (e) {
    Logger.log('Error: ' + e.message);
  }
}
</code>

Этот скрипт извлекает данные с сайта Московской биржи в формате XML и импортирует их в ваш Google Sheet, заменяя точки на запятые в числовых значениях.

Шаг 4: Выполнение скрипта

Сохраните скрипт, нажав на значок диска в верхней части редактора. Затем выполните скрипт, нажав на значок треугольника (выполнить). Скрипт загрузит данные с указанного URL и импортирует их в ваш Google Sheet.

Заключение

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

Хотя вопрос был задан Тимофеем на Smart-Lab, этот метод может быть полезен многим, кто ищет эффективные способы работы с финансовыми данными. Надеюсь, эта статья поможет вам в ваших начинаниях!

10 Комментариев
  • Григорий
    02 августа 2024, 23:37
    Молодец!
  • Александр Бабинцев
    03 августа 2024, 13:52
    Большое спасибо!
  • I II
    03 августа 2024, 16:44
    Круто! А если я хочу исторические данные за последние 30 дней по каждому тикеру импортнуть?
    • Ришат Галиуллин
      04 августа 2024, 15:35
      I II, надо поменять URL
      • cern
        08 августа 2024, 13:15
        Ришат Галиуллин, 
            var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
        Hepaботает

        пишет это
        ИнформацияError: Cannot read properties of null (reading 'getActiveSheet')

         
        • Ришат Галиуллин
          08 августа 2024, 19:54
          cern, не бери активную таблицу, а задай либо таблицу с айди либо с именем. Так же задай имя листа, а лучше номер (нумерация идет слева начиная с 0). У тебя же же получается дословно «возьми активную книгу.возьми активный лист.» а надо либо«возьми книгу с именем '...'.возьми лист с именем '...' » либо «возьми книгу с ID.возьми лист [0].
          • cern
            09 августа 2024, 12:46
            Ришат Галиуллин, как это выглядит в скрипте непойму, я тот вставил мне выдал ошибку
  • Ришат Галиуллин
    04 августа 2024, 15:33
    Можно поставить еще триггер, например, обновлять данные каждый день в 9.00-10.00
  • Воронов Дмитрий
    07 августа 2024, 12:13
    Спасибо, большое!

    Скажите, пожалуйста, как импортировать котировки по отдельным компаниям (по списку)?

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн