Zuweisen von Makros für Grafikobjekten in ONLYOFFICE-Tabellenkalkulationen

8 September 2021By Vlad

Verwenden Sie Makros für Automatisierung von Routineaufgaben in Ihren Berechnungen? In diesem Beitrag entdecken Sie ein nützliches Makro für Tabellenkalkulationen.

Zuweisen von Makros für Grafikobjekten in ONLYOFFICE-Tabellenkalkulationen

Wieso Grafikobjekten ein Makro zuweisen

In der Version 6.4 von ONLYOFFICE Docs haben wir eine neue Funktion für Tabellenkalkulationen hinzugefügt, nämlich das Zuweisen eines Makros, das ausgeführt werden soll, wenn Sie auf ein Grafikobjekt klicken. Damit können Sie ein solches Objekt, z. B. eine Form, in eine Schaltfläche umwandeln und einige der Makros beim Drücken als Rückruffunktion festlegen.

Benutzer können auf die Schaltfläche mit dem zugewiesenen Makro klicken, um einen Vorgang auszuführen. Man soll also die Liste mit Makros jedes Mal nicht öffnen, wenn man einen davon braucht.

Beispiel eines Makros: Automatisches Diagramm für den Wechselkurs

Wir haben 3 Makros für verschiedene Währungspaare* (EUR-USD, USD-EUR und BTC-USD) erstellt, die Informationen über die Wechselkurse der letzten Tage erhalten und die Tabelle mit den empfangenen Werten ausfüllen.

Diese Makros sind 3 AutoFormen zugewiesen. Wenn Sie auf jedes Form klicken, wird ein Makro ausgeführt, die Tabelle wird mit den relevanten Daten ausgefüllt und das Diagramm neu erstellt.

Währungspaar USD – EUR

Zuweisen von Makros für Grafikobjekten in ONLYOFFICE-Tabellenkalkulationen

Der Code für das Makro:

(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++;
            }
        }
    }
})();

Währungspaar EUR – USD

Zuweisen von Makros für Grafikobjekten in ONLYOFFICE-Tabellenkalkulationen

Der Code für das Makro:

(function()
{
    var sCurPair = "EUR_USD";
    
     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++;
            }
        }
    }
})();

Währungspaar BTC – USD

Zuweisen von Makros für Grafikobjekten in ONLYOFFICE-Tabellenkalkulationen

Der Code für das Makro:

(function()
{
    var sCurPair = "BTC_USD";
    
 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++;
            }
        }
    }
})();

*Hinweis: In diesen Makros haben wir den Drittanbieterdienst CurrencyConverterApi.com verwendet, um Informationen über die Wechselkurse zu erhalten. Die Anzahl der Anfragen pro Stunde ist begrenzt. Wenn dieses Limit überschritten wird, funktioniert das Makro nicht. Wenn Sie dieses Makro verwenden möchten, ist es besser, sich auf der Service-Website zu registrieren und Ihren eigenen Schlüssel im Makrocode zu verwenden.