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

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

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

В F17 — DIAS

avatar

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

 

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
Gambler, не пашет ничего
avatar
=REGEXREPLACE(TO_TEXT(B2); "\."; ",")
avatar
Артём Баженов, спасибо огромное откуда все знаешь?
Тимофей Мартынов, сам с этой штукой боролся, когда собирал небольшие модельки в гугл таблицах %)
avatar
Очень помогли скриптом для получения котировок! Благодарю. Точку в запятую превратите через REGEXREPLACE(A1; "[.]"; ",") где A1 ячейка с котировкой с точкой в качестве разделителя.

Читайте на SMART-LAB:
Фото
USD/CAD: статистика и нефть вернули канадцу уверенность
Канадский доллар уверенно укрепился, оттолкнувшись от локального минимума. Росту валюты способствовало сочетание сразу нескольких фундаментальных...
Акции ЕвроТранса выросли почти вдвое после запрета коротких продаж
Ценные бумаги “ЕвроТранса” вчера подорожали на 96,35%, а сегодня продолжают рост еще более чем на 8%. Основным поводом стало решение НКЦ запретить...
Представляем отделы Займера: отдел продаж
Хотя подавляющее большинство займов в нашей компании выдается полностью автоматизированно через онлайн-платформу, в некоторых случаях на помощь...
Фото
Включаем "Антикризис" на полную катушку! А вдруг?
Сегодня я был снова вынужден прервать свой отвратительный отпуск, чтобы заниматься делами своего инвестиционного портфеля и даже для того, чтобы...

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

....все тэги



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