Описание
Верните информацию о курсах валют за последние несколько дней и заполните таблицу полученными значениями. Здесь представлен макрос для валютной пары USD-EUR, но вы можете получить информацию о других курсах, изменив значение переменной sCurPair («EUR_USD», «BTC_USD» и т.д.).

В этом макросе для получения информации о курсах валют используется сторонний сервис CurrencyConverterApi.com. Существует ограничение на количество запросов в час. При превышении этого лимита макрос работать не будет. Если вы хотите использовать этот макрос, то лучше зарегистрироваться на сайте сервиса и использовать свой ключ в коде макроса.
Вы можете назначить этот макрос автофигуре. При нажатии на нее выполняется макрос, таблица заполняется соответствующими данными и перестраивается соответствующий график.

(function()
{
    var sCurPair = "USD_EUR";

    function formatDate(d) {
        var month = '' + (d.getMonth() + 1),
            day = '' + d.getDate(),
            year = d.getFullYear();

        if (month.length < 2) 
            month = '0' + month;
        if (day.length < 2) 
            day = '0' + day;

        return [year, month, day].join('-');
    }

    function previousWeek(){
        var today = new Date();
        var prevweek = new Date(today.getFullYear(), today.getMonth(), today.getDate()-7);
        return prevweek;
    }

    var sDate = formatDate(previousWeek());
    var sEndDate = formatDate(new Date());
    var apiKey = 'e5ed9f0b2b3aa6f4158f';
    var sUrl = 'https://free.currconv.com/api/v7/convert?q='
            + sCurPair + '&compact=ultra' + '&date=' + sDate + "&endDate=" + sEndDate + '&apiKey=e5ed9f0b2b3aa6f4158f';
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.open("GET", sUrl, false);
    xmlHttp.send();
    if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
        var oData = JSON.parse(xmlHttp.responseText);
        for(var key in oData) {
            var sheet = Api.GetSheet("Sheet1");
            var oRange = sheet.GetRangeByNumber(0, 1);
            oRange.SetValue(key);
            var oDates = oData[key];
            var nRow = 1;
            for(var date in oDates) {
                oRange = sheet.GetRangeByNumber(nRow, 0);
                oRange.SetValue(date);
                oRange = sheet.GetRangeByNumber(nRow, 1);
                oRange.SetValue(oDates[date]);
                nRow++;
            }
        }
    }
})();

Используемые методы: GetSheet, GetRangeByNumber, SetValue.

Была ли полезна статья?
Позвольте нам стать лучше