Блог им. drbuzz
Раз тут можно про скрипты и это сам Тимофей Мартынов всем подписчикам канала Smart-Lab в Telegram рассылает...
Предложу еще один скрипт который можно использовать для проверки последней цены котировки с Московской биржи прямо из любого современного браузера.
Сам скрипт:
Объявление функции
async function moexTickerLast(ticker) {
const json = await fetch('https://iss.moex.com/iss/engines/stock/markets/shares/securities/' + ticker + '.json').then(function(res) { return res.json()});
return json.marketdata.data.filter(function(d) { return ['TQBR', 'TQTF'].indexOf(d[1]) !== -1; })[0][12];
}Вызов функции
moexTickerLast('GAZP').then(console.log);Что бы использовать в браузере нужно открыть браузерную JavaScript консоль объявить и использовать функцию там (см. скриншот):

Скрипт можно использовать не только в браузере, но и например написать расширение для браузера или функцию для Excel в Google Docs
Эта функция работает с богатыми данными API Московской биржи, как ими распоряжаться и какие поля данных читать можете решить сами.
Дерзайте!
Тимофей Мартынов, Там не так тривиально как в браузере. Путь примерно такой: Инструменты>Редактор скриптов
Язык немного для апи excel отличается.
Разница в методе UrlFetchApp.fetch
А дальше:
habr.com/post/215843/
developers.google.com/apps-script/overview
Так это можно легко и быстро сделать интерактивный портфель
function getPrice(ticker) { var response = UrlFetchApp.fetch("https://iss.moex.com/iss/engines/stock/markets/shares/securities/"+ticker+".json" ); var w = JSON.parse(response.getContentText()); data =w.securities.data for (var i = 0; i < data.length; i++) { if (data[i][1] == "TQBR") { return data[i][3] } } return 0 }И далее используется, как обычная формула вида
=getPrice("BANEP")В Гугл докс можно котировки без скриптов подтягивать:
=GOOGLEFINANCE(«AAPL»; «price»)
или для мос. биржи:
=GOOGLEFINANCE(«MCX:LKOH»; «price»)
(только кавычки другие, СЛ заменил их)
А iss.moex.com дает котировки в реальном времени или там задержка 15 сек?
Dmitryy, GOOGLEFINANCE не умеет с нашими префами работать. Проверь SNGSP
Апи биржи с задержкой, только для особых клиентов без задержки
А вот вариант как Free API Мосбиржи использовать в гугл таблицах: https://habr.com/post/486716/
function getA(tt,ticker) { var bn = "bonds"; var sr ="shares"; if (tt=="TQOB"){ var pr = bn} else if(tt=="EQOB"){ var pr = bn} else if(tt=="TQOD"){ var pr = bn} else if(tt=="TQCB"){ var pr = bn} else if(tt=="EQQI"){ var pr = bn} else if(tt=="TQIR"){ var pr = bn} else if(tt=="TQTF"){ var pr = sr} else if(tt=="TQBR"){ var pr = sr} else if(tt=="SNDX"){ var pr = sr} else if(tt=="TQIF"){ var pr = sr} else if(tt=="TQTD"){ var pr = sr}; var response = UrlFetchApp.fetch("https://iss.moex.com/iss/engines/stock/markets/"+pr+"/securities/"+ticker+".json" ); var w = JSON.parse(response.getContentText()); data =w.securities.data for (var i = 0; i < data.length; i++) { if (data[i][1] == tt) { return data[i][3] } } return 0 }Где tt это режим торгов, а ticker это тикер акции. Так вот вопрос как получить в эту функцию режим торгов? Хотелось бы указывать только тикер инструмента.function getAA(ticker) { var response2 = UrlFetchApp.fetch("https://iss.moex.com/iss/securities/HYDR.json" ); var tt = JSON.parse(response2.getContentText()); var data2 =tt.boards.data for (var t = 0; t < data2.length; t++) { if (data2[t][0] == "HYDR") { var data2 = data2[t][1] } } var bn = "bonds"; var sr ="shares"; if (data2=="TQOB"){ var pr = bn} else if(data2=="EQOB"){ var pr = bn} else if(data2=="TQOD"){ var pr = bn} else if(data2=="TQCB"){ var pr = bn} else if(data2=="EQQI"){ var pr = bn} else if(data2=="TQIR"){ var pr = bn} else if(data2=="TQTF"){ var pr = sr} else if(data2=="TQBR"){ var pr = sr} else if(data2=="SNDX"){ var pr = sr} else if(data2=="TQIF"){ var pr = sr} else if(data2=="TQTD"){ var pr = sr}; var response = UrlFetchApp.fetch("https://iss.moex.com/iss/engines/stock/markets/"+pr+"/securities/"+ticker+".json" ); var w = JSON.parse(response.getContentText()); data =w.securities.data for (var i = 0; i < data.length; i++) { if (data[i][1] == data2) { return data[i][3] } } return 0 }