TGViewer
Google Таблицы Google Таблицы @google_sheets · 60.2K subscribers
Post #1275 11.5K
Ставку рефинансирования достали, теперь достанем и курсы валют ЦБРФ 🗣

У Мосбиржи есть отличное API, которое без ключа отдает много полезного.

Обращаясь к эндпоинту moex.com/iss/statistics/engines/currency/markets/selt/rates мы получаем XML, с курсами йены, доллара и евро к рублю.

Вариант скрипта, в котором мы парсим XML как нормальные люди:
function usdClose() {
const url = 'moex.com/iss/statistics/engines/currency/markets/selt/rates'
const r = UrlFetchApp.fetch(url);

var d = XmlService.parse(r);
var root = d.getRootElement();
var dataElement = root.getChild('data');
var rowsElement = dataElement.getChild('rows');
var rowElement = rowsElement.getChild('row');
var closePrice = rowElement.getAttribute('USDTOM_UTS_CLOSEPRICE').getValue();
Logger.log(closePrice); // 93.0351
return closePrice
};


И вариант, где мы просто выдергиваем регулярным выражением нужное поле:
function eurLast() {
...
const regExp = /"EURRUB_TOM" price="(.+?)"/;
const lastPrice = r.toString().match(regExp)?.[1];
Logger.log(lastPrice); //
return lastPrice; //93.0351

};

Обходим проблему недоступности серверов
Иногда сервер Мосбиржи недоступен и скрипт падает с ошибкой, давайте для этих случаев напишем украдем часть собиратора обёртку, пусть обращается к серверу несколько раз.

//так запускать, дадим скрипту три попытки
function go() {
retry(3, eurLast);
}


//сама обертка
function retry(n, func, ...args) {
for (let i = 0; i < Math.min(n, 9); i++) {
try {
return func(...args)
} catch (e) {
Logger.log("Retry " + (i + 1) + " failed, waiting")
Logger.log(e)
Utilities.sleep(i * 1000)
}
}
throw "Number of tries exceeded, aborting"
}
  • 👍 11
  • ❤ 8
  • 🔥 4
  • 💩 2
More from @google_sheets
  1. Oct 7, 2026💡13 умных шаблонов Google-Таблиц, которые сделают вашу работу легче и эффективнее. Для бу…
  2. Oct 6, 2026спасибо тебе, Марина, за классный кейс для реализации!
  3. Oct 6, 2026PS Оцените наш выводок :) У каждой собачки свой лист, свой баланс и своя история прогулок.…
  4. Oct 6, 2026Часть 2. Считаем зарплату выгульщиков и "баланс" по собачке Итак, у нас есть выгрузка из A…
  5. Oct 6, 2026Часть 1. Приложение для выгульщиков Упомяну, что всего этого не случилось бы без прекрасно…
  6. Oct 2, 2026Скоро расскажем, как мы создали систему для dog walker в Петербурге 🐕 Люди гуляют с собак…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →