Этот макрос получает значения курсов валют за последние 7 опубликованных дней и автоматически заполняет ими таблицу. По умолчанию используется курс доллара США (USD). Чтобы получить данные по другой валюте, измените значение переменной sCurrency, например:
var sCurrency = «EUR»;
В качестве значения переменной можно указать код другой валюты (USD, EUR, GBP, CNY и т.д.).
Макрос получает актуальные данные о курсах валют, затем последовательно загружает значения за предыдущие дни. Используются только дни, для которых были опубликованы курсы, поэтому выходные и праздничные дни пропускаются автоматически.
После выполнения макроса в таблицу добавляются дата и значение выбранного курса. Полученные данные можно использовать для построения или обновления графика.
Макрос можно назначить автофигуре. При нажатии на нее выполняется макрос, таблица заполняется актуальными значениями, а связанный с ней график перестраивается.
Макрос:
(function()
{
var sCurrency = "USD";
var sUrl = "https://www.cbr-xml-daily.ru/daily_json.js";
var sheet = Api.GetActiveSheet();
sheet.GetRangeByNumber(0, 0).SetValue("Дата");
sheet.GetRangeByNumber(0, 1).SetValue(sCurrency);
var nRow = 1;
var nDays = 7;
for (var i = 0; i < nDays; i++)
{
$.ajax({
url: sUrl,
async: false,
dataType: "json",
success: function(data)
{
var oCurrency = data.Valute[sCurrency];
if (oCurrency)
{
var sDate = data.Date.substring(0, 10);
sheet.GetRangeByNumber(nRow, 0)
.SetValue(sDate);
sheet.GetRangeByNumber(nRow, 1)
.SetValue(
oCurrency.Value / oCurrency.Nominal
);
nRow++;
}
if (data.PreviousURL)
{
sUrl = "https:" + data.PreviousURL;
}
}
});
}
})();В отличие от предыдущего примера, в данном варианте для получения данных используется внешний API с авторизацией по ключу.
Перед использованием необходимо указать собственный API-ключ в переменной apiKey:var apiKey = "API_KEY";
В массиве currencies можно указать список валют, курсы которых необходимо получить. В приведенном примере используются значения для USD, EUR, GBP и SGD относительно базовой валюты RUB.
После выполнения запроса полученные значения автоматически добавляются в таблицу: в первый столбец записывается код валюты, во второй — соответствующий курс.
(function () {
function fetchAndPopulateData(url, currencies) {
let xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.onload = function () {
if (this.status === 200) {
let data = JSON.parse(this.response).data;
let sheet = Api.GetActiveSheet();
sheet.GetRange("A1").SetValue("Currency Code");
sheet.GetRange("B1").SetValue("Exchange Rate");
currencies.forEach((currency, index) => {
if (data[currency]) {
sheet.GetRange(`A${index + 2}`).SetValue(currency);
sheet.GetRange(`B${index + 2}`).SetValue(data[currency].value);
}
});
}
};
xhr.send();
}
let currencies = ["USD", "EUR", "GBP", "SGD"];
let apiKey = "API_KEY"; // Вставьте здесь свой API ключ
let latestURL = 'https://api.sitename.ru/v3/latest?apikey=' + apiKey
+ '¤cies=' + currencies.join("%2C")
+ '&base_currency=RUB';
fetchAndPopulateData(latestURL, currencies);
})();











