Тимофей Мартынов
Тимофей Мартынов личный блог
02 августа 2024, 18:23

Импорт цен акций с Мосбиржи в Google таблицы - нужная ваша помощь

Блин, с импортом данных как с программированием, можно часами мучаться, где у тебя там ошибка.
Решил воспользоваться «помощью зала».
Друзья, вот так можно импортировать в гугл таблицы котировку:
Импорт цен акций с Мосбиржи в Google таблицы - нужная ваша помощь
Выражение такое:
=IMPORTXML("https://iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml";"//row[@SECID='DIAS']/@LAST")
Вот только импортируется вся эта вещь в непонятном формате, когда речь заходит о числах с точкой.
Если у меня в гугле стоит "," в качестве разделителя дробной части, то точку не понимает эта зараза.

Функция преобразования точки в запятую тоже не работает
=REGEXREPLACE(B2; "[.]"; ",")
Импорт цен акций с Мосбиржи в Google таблицы - нужная ваша помощь

Че делать то?

И еще вопрос:
=IMPORTXML("https://iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml";"//row[@SECID='DIAS']/@LAST")
Можно в этот текст внутри кавычек запихнуть не тикер DIAS а ссылку на ячейку? Как?
13 Комментариев
  • Gordon Shumway
    02 августа 2024, 18:44
    =SUBSTITUTE(IMPORTXML(...), ".", ",")
  • Gordon Shumway
    02 августа 2024, 18:49

    =IMPORTXML(«URL»,"//row[@SECID='" & A1 & "']/@LAST")
    тикер в A1

  • InvestingAsHobby_v_Telegramm
    02 августа 2024, 18:55
    =SUBSTITUTE(IMPORTXML(«iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml»;"//row[@SECID='"&F17&"']/@LAST");".";",")

    В F17 — DIAS

  • Auximen
    02 августа 2024, 20:35

    Нафиг тебе командная строка? Напиши нормальную функцию

     

    Google таблица — Расширения — Apps Script

     

     

    Вот код (код в нормальном виде: https://codefile.io/f/mIXmTEg5NN)

     

    function getAttributeValue(ticker, attribute) {  var url = «iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml»;  var response = UrlFetchApp.fetch(url);  var xml = response.getContentText();
      try {    // Парсим XML    var document = XmlService.parse(xml);    var root = document.getRootElement();       // Находим элемент <data> с id=«marketdata»    var dataElement = findDataElementById(root, 'marketdata');       if (!dataElement) {      return «Data element with id 'marketdata' not found»;    }       var rowsElement = dataElement.getChild('rows');    if (!rowsElement) {      return «Rows element not found»;    }       var rowList = rowsElement.getChildren('row');       for (var i = 0; i < rowList.length; i++) {      var row = rowList[i];      var secidAttr = row.getAttribute('SECID');           if (secidAttr && secidAttr.getValue() === ticker) {        var targetAttr = row.getAttribute(attribute);               if (targetAttr) {          var result = targetAttr.getValue().replace('.', ',');          return result;        } else {          return «Attribute not found»;        }      }    }       return «Ticker not found»;  } catch (e) {    return «Error processing XML: » + e.message;  }}
     function findDataElementById(rootElement, idValue) {  var dataElements = rootElement.getChildren('data');   for (var i = 0; i < dataElements.length; i++) {    var dataElement = dataElements[i];    var idAttribute = dataElement.getAttribute('id');       if (idAttribute && idAttribute.getValue() === idValue) {      return dataElement;    }  }   return null; // Если элемент не найден}

     

    В ячейке вставляешь 

     

    =getAttributeValue($B3; «LAST»)


     

    Теперь можно использовать не только с тикером DIAS, но и выбирать нужный атрибут, например, LOW

     

    =getAttributeValue($B3; «LOW»)

     

  • Gambler <osaengine.ru>
    02 августа 2024, 20:08
    smart-lab.ru/blog/1045080.php решение за 5 минут
    • cern
      08 августа 2024, 19:49
      Gambler, не пашет ничего
  • Артём Баженов
    03 августа 2024, 14:33
    =REGEXREPLACE(TO_TEXT(B2); "\."; ",")
      • Артём Баженов
        06 августа 2024, 15:41
        Тимофей Мартынов, сам с этой штукой боролся, когда собирал небольшие модельки в гугл таблицах %)
  • Кирилл Козырчук
    15 октября 2024, 11:00
    Очень помогли скриптом для получения котировок! Благодарю. Точку в запятую превратите через REGEXREPLACE(A1; "[.]"; ",") где A1 ячейка с котировкой с точкой в качестве разделителя.

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

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