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.2К | ★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

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

 

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:
Фото
Как устроен рынок высоколиквидных товаров
📦 Рынок высоколиквидных товаров — это сегмент, где ключевую роль играет скорость оборота. Речь идёт о вещах, которые можно быстро оценить,...
Фото
Высокие ставки прошли пик давления, но кредитный отбор стал жестче
По оценке аналитиков Газпромбанка, 2025 год стал периодом ухудшения кредитного профиля некоторых российских корпоративных заемщиков, хотя...
Фото
Приглашаем на закрытый эфир БКС «Мировой кризис: как подготовиться?» в 17:00
Последний шанс! Уже сегодня в 17:00 мы проведем специальный закрытый эфир: «Мировой кризис: как подготовиться?». Не пропустите!...
Фото
ДВМП: результаты в рамках прогноза, но и цена близка к целевой - будет ли выкуп миноров из-за объединения Росатома с DP World?
ДВМП отчитался за 2025 год: 2,3 млрд рублей убытка для акционеров за 2025 год Традиционно сравниваю со своим прогнозом и делюсь...

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

....все тэги



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