Zuweisen von Makros für Grafikobjekten in ONLYOFFICE-Tabellenkalkulationen
Verwenden Sie Makros für Automatisierung von Routineaufgaben in Ihren Berechnungen? In diesem Beitrag entdecken Sie ein nützliches Makro für 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
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 + '&amp;amp;compact=ultra' + '&amp;amp;date=' + sDate + "&amp;amp;endDate=" + sEndDate + '&amp;amp;apiKey=e5ed9f0b2b3aa6f4158f';
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", sUrl, false);
xmlHttp.send();
if (xmlHttp.readyState == 4 &amp;amp;&amp;amp; 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
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
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.
Nützliche Links
Weitere Informationen zu Makros in ONLYOFFICE
Erhalten Sie die neueste Version der Editoren: Community / Enterprise / Developer
Alle neuen Funktionen in ONLYOFFICE Docs v6.4
Neue Plug-ins für die Rechtschreibprüfung LanguageTool und Grammalecte
Erstellen Sie Ihr kostenloses ONLYOFFICE-Konto
Öffnen und bearbeiten Sie gemeinsam Dokumente, Tabellen, Folien, Formulare und PDF-Dateien online.