Come assegnare una macro ad un oggetto grafico in fogli di calcolo ONLYOFFICE
Usi macro per automatizzare i tuoi calcoli di routine? In questo post scopriremo un esempio in più su utilizzo di macro che potrebbe servirti.
A cosa serve assegnare macro alla grafica
Nella versione 6.4 di ONLYOFFICE Docs abbiamo aggiunto una funzionalità in più negli editor di fogli di calcolo — possibilità di assegnare macro ed eseguirla quando fai un clic su un oggetto grafico. Questo ti permette usare quelli oggetti grafici, ad esempio forme già pronte, come pulsanti e svolgere macro quando pulsante viene schiacciato.
Così gli utenti possono fare un clic sul pulsante con una macro assegnata per eseguire qualche azione. E’ più comodo invece che aprire la pagina con macro ogni volta quando uno vuole eseguirla.
Esempi di macro: diagramma automatico per mostrare tassi di cambio delle valute
Per farti vedere come funziona, abbiamo creato 3 macro per coppie di valute diverse* (EUR-USD, USD-EUR e BTC-USD) che ottengono le informazioni di tassi di cambio per ultimi giorni e compilano una tabella con i valori ricevuti.
Queste macro sono assegnate a 3 oggetti. Quando fai un clic su ogni oggetto svolgi una macro e così la tabella viene compilata con i dati pertinenti e il grafico verrà ricostruito.
Coppia di value USD – EUR
Codice macro:
(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++;
}
}
}
})();
Currency pair EUR – USD
Codice macro:
(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++;
}
}
}
})();
Currency pair BTC – USD
Codice macro:
(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++;
}
}
}
})();
*Ti preghiamo di notare: Per creare queste macro abbiamo usato i servizi di terze parti CurrencyConverterApi.com per ottenere le informazioni di tassi di cambio. Hanno un limite di quantità di richieste all’ora. Se questo limite viene superato la macro non funziona più. Se vuoi usare questa macro meglio registrarsi sul sito del servizio e usare la chiave propria nel codice macro.
Useful links
Maggiori informazioni su macro in ONLYOFFICE
Ottieni ultima versione degli editor: community / enterprise / developer
Tutte le nuove funzionalità di ONLYOFFICE Docs v.6.4
Nuovi plugin per controllo ortografico: LanguageTool e Grammalecte
Crea il tuo account ONLYOFFICE gratuito
Visualizza, modifica e collabora su documenti, fogli, diapositive, moduli e file PDF online.