dr-mart

Импорт цен акций с Мосбиржи в 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 а ссылку на ячейку? Как?
★3
10 комментариев
=SUBSTITUTE(IMPORTXML(...), ".", ",")
Gordon Shumway, оооо ничосе
NoName, а 5 и ложь это что?
Тимофей Мартынов, точка или запятая в разделителе (деньги/числа) определяется в настройка windows в региональных стандартах. Excel все берет оттуда.
avatar

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

=SUBSTITUTE(IMPORTXML(«iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml»;"//row[@SECID='"&F17&"']/@LAST");".";",")

В F17 — DIAS

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

 

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»)

 

avatar
smart-lab.ru/blog/1045080.php решение за 5 минут
avatar
У ЛехиВана спрашивай теперь

теги блога Тимофей Мартынов

....все тэги



UPDONW
Новый дизайн