Torna al Blog

Come ottenere tassi di cambio in tempo reale in Google Sheets (GOOGLEFINANCE, Apps Script e una currency API)

V
Vlado Grigirov
August 25, 2026
Currency API Exchange Rates Google Sheets Apps Script Tutorial Finexly

Come ottenere tassi di cambio in tempo reale in Google Sheets (GOOGLEFINANCE, Apps Script e una currency API)

Ottenere tassi di cambio in tempo reale in Google Sheets sembra un problema già risolto. Scrivi =GOOGLEFINANCE("CURRENCY:USDEUR"), compare un numero e passi oltre. Va benissimo per il budget di un viaggio personale. Smette di funzionare nel momento in cui il foglio alimenta una fattura, un ciclo di buste paga, un report sui ricavi o qualsiasi cosa su cui un collega dovrà prendere decisioni — a causa di una restrizione di licenza, di una stranezza documentata sulle date e di un limite di Apps Script che quasi nessun tutorial menziona.

Questa guida copre tutti e tre i metodi pratici — la funzione integrata GOOGLEFINANCE, una funzione personalizzata in Apps Script alimentata da una currency API e una tabella dei tassi aggiornata da un trigger temporizzato — con i numeri reali delle quote, le avvertenze di Google riportate testualmente e codice eseguibile. Ogni affermazione sul comportamento di Google che segue è citata dalla documentazione ufficiale di Google, e ogni affermazione che non è documentata viene segnalata come tale.


I tre modi per portare i tassi di cambio dentro Google Sheets

GOOGLEFINANCEFunzione personalizzata Apps ScriptTabella dei tassi pianificata
Tempo di configurazionePochi secondi~10 minuti~20 minuti
Serve una chiave APINo
AggiornamentoAutomatico, al ricalcoloAl ricalcoloSu un trigger che controlli tu
Tassi storiciSì (con riserve)Dipende dal tuo piano
Funziona in Apps Script / Sheets APIStorici: no
Uso commerciale / professionaleLimitato dai termini di GoogleRegolato dai termini del tuo provider APIRegolato dai termini del tuo provider API
Ideale perConsultazioni rapide, fogli personaliColonne di conversione estemporaneeQualsiasi cosa da cui dipendano altre persone
Quasi tutti dovrebbero partire dal metodo 1 e passare al metodo 3 non appena il foglio diventa strutturale.


Metodo 1: GOOGLEFINANCE — e cosa dice esattamente Google al riguardo

La formula di base per le valute

Lo schema insegnato da ogni tutorial è un ticker CURRENCY: composto da due codici valuta ISO 4217 concatenati:

=GOOGLEFINANCE("CURRENCY:USDEUR")

Per convertire un importo nella cella A2:

=A2 * GOOGLEFINANCE("CURRENCY:USDEUR")

Per costruire la coppia a partire da due celle che contengono i codici valuta:

=GOOGLEFINANCE("CURRENCY:" & B2 & C2)

Un'avvertenza onesta che nessun articolo concorrente riporta: la forma di ticker CURRENCY:XXXYYY non compare da nessuna parte nella documentazione ufficiale di GOOGLEFINANCE. La firma documentata è GOOGLEFINANCE(ticker, [attribute], [start_date], [end_date|num_days], [interval]), e l'unico contenuto sulle valute presente nella pagina di assistenza è un attributo "currency" (la valuta in cui è quotato un titolo) e un esempio di grafico. La sintassi della coppia CURRENCY: funziona, e funziona da anni, ma è un comportamento consolidato dalla community, non un contratto documentato — il che significa che Google è libera di cambiarla senza alcun preavviso di deprecazione. Google inoltre non pubblica alcun elenco di coppie di valute supportate, quindi qualsiasi articolo che ti dica che ne supporta "circa 50" sta tirando a indovinare.

Tassi storici: la regola sugli attributi che tutti sbagliano

Passa una data e ottieni dati storici:

=GOOGLEFINANCE("CURRENCY:USDEUR", "close", DATE(2026,1,15))
=GOOGLEFINANCE("CURRENCY:USDEUR", "close", DATE(2026,1,1), DATE(2026,1,31), "DAILY")

Fai attenzione all'attributo. Google lo documenta chiaramente: "Se viene specificato un qualsiasi parametro di data, la richiesta è considerata storica e sono ammessi solo gli attributi storici." Gli attributi storici sono open, close, high, low, volume e all — e "price" non è tra questi. "price" è documentato esclusivamente come attributo in tempo reale ("Quotazione in tempo reale, con un ritardo massimo di 20 minuti").

Vai a guardare adesso i tutorial sulle valute in Google Sheets che stanno in cima ai risultati: quasi tutti ti propinano GOOGLEFINANCE("CURRENCY:USDEUR", "price", DATE(...)). Quella combinazione contraddice la documentazione stessa di Google. Usa "close".

Altri due comportamenti documentati che vale la pena interiorizzare:

  • "Se start_date è specificato ma end_date|num_days no, vengono restituiti solo i dati di quel singolo giorno."
  • "I risultati in tempo reale vengono restituiti come valore all'interno di una singola cella. I dati storici, anche per un solo giorno, vengono restituiti come array espanso con intestazioni di colonna." È per questo che una formula storica all'apparenza corretta riversa due colonne e una riga di intestazione nel tuo layout ordinato, ed è per questo che di solito devi avvolgerla in INDEX(...,2,2).

Lo slittamento al mezzogiorno UTC

Questo corrompe silenziosamente i report basati sull'abbinamento delle date. Testualmente da Google:

"Google tratta le date passate a GOOGLEFINANCE come se fossero le ore 12:00 UTC. Le borse che chiudono prima di quell'orario possono risultare spostate di un giorno."

Se stai riconciliando una contabilità in cui ogni riga deve usare il tasso della relativa data di registrazione, uno slittamento di un giorno è una vera rottura di riconciliazione, non un problema di arrotondamento. Se è questo il caso del tuo foglio, leggi la nostra guida su tassi di cambio e dichiarazione fiscale prima di considerare un array GOOGLEFINANCE riversato come tua evidenza contabile.

Il ritardo è di 3 minuti, non di 20

Quasi ogni articolo sull'argomento ti dice che i tassi di cambio di GOOGLEFINANCE sono "in ritardo fino a 20 minuti". Quel numero, 20 minuti, viene dalla clausola generica sulle quotazioni dei titoli associata all'attributo "price". La pagina di disclaimer di Google Finance pubblica una tabella dei ritardi per tipo di asset, e la riga Valute — a livello globale, fornite da Morningstar — riporta 3 minuti. Anche per le criptovalute sono 3 minuti.

Quindi il dato è più fresco di quanto internet creda. Quello che Google non pubblica è la frequenza con cui Sheets ricalcola la formula, cioè proprio il numero che ti interessa davvero: un tasso vecchio di 3 minuti che sta in una cella non ricalcolata da martedì resta comunque un tasso di martedì. Chiunque citi uno specifico intervallo di ricalcolo sta citando qualcosa che Google non ha mai documentato.

Per confronto, Finexly aggiorna i tassi ogni minuto e li restituisce su richiesta, quindi la freschezza dipende da quando chiami tu, non da quando il foglio decide di ricalcolare. Se vuoi capire cosa significhi "in tempo reale" tra i vari provider in generale, leggi da dove prendono i dati le exchange rate API.

La restrizione d'uso che nessuno cita

Questo è il paragrafo più importante dell'articolo, e non compare in nessuno dei tutorial ai primi posti. Dalla pagina di assistenza GOOGLEFINANCE di Google, testualmente:

"Limitazioni d'uso: i dati non sono destinati all'uso professionale nel settore finanziario né all'uso da parte di altri professionisti presso aziende non finanziarie (enti pubblici inclusi). L'uso professionale può essere soggetto a ulteriori costi di licenza da parte di un fornitore di dati terzo."

E dal disclaimer di Google Finance:

"Accetti di non copiare, modificare, riformattare, scaricare, archiviare, riprodurre, rielaborare, trasmettere o ridistribuire alcun dato o informazione qui presente, né di utilizzare tali dati o informazioni in un'impresa commerciale senza aver ottenuto un consenso scritto preventivo."
"Google non può garantire l'accuratezza dei tassi di cambio visualizzati. Dovresti verificare i tassi correnti prima di effettuare qualsiasi transazione che potrebbe essere influenzata dalle variazioni dei tassi di cambio."

Ora confronta tutto questo con ciò che il tuo foglio fa realmente. Definire il prezzo della fattura di un cliente, convertire le fatture dei fornitori per l'amministrazione o esportare un dato di ricavo convertito in un report che invii a un cliente non rientra in modo evidente nelle "finalità informative". Una exchange rate API con licenza elimina del tutto la questione e questo — non l'accuratezza in sé — è il vero motivo per cui i team finance abbandonano GOOGLEFINANCE.

E il blocco insormontabile

"I dati storici non possono essere scaricati né consultati tramite la Sheets API o Apps Script. Se provi a farlo, vedrai un errore #N/A al posto dei valori nelle celle corrispondenti del foglio di lavoro."

Nel momento in cui vuoi automatizzare qualcosa — un export notturno, un'estrazione via Sheets API, uno script che fotografa i tassi — i dati storici di GOOGLEFINANCE sono fuori discussione per progettazione. È questo il muro che spinge le persone verso il metodo 2.


Metodo 2: una funzione personalizzata Apps Script alimentata da una currency API

Una funzione personalizzata è una funzione JavaScript in Apps Script che richiami da una cella come qualsiasi funzione integrata. Google conferma esplicitamente che questo funziona con le richieste web: le funzioni personalizzate "possono chiamare solo servizi che non hanno accesso a dati personali", e URL Fetch è nell'elenco di quelli consentiti.

Passo 1: ottieni una chiave API e conservala come si deve

Prendi una chiave gratuita dalla dashboard Finexly — 1.000 richieste al mese, senza carta di credito. Poi, e questo è importante: non scriverla direttamente nel codice. Due dei tutorial sulle valute in Google Sheets più linkati incollano la chiave API dritta nello script, in un file che viaggia insieme al foglio di lavoro verso chiunque tu lo condivida.

Nell'editor di Apps Script (Estensioni → Apps Script), esegui questo una volta sola dall'editor per salvare la chiave nelle Proprietà script:

function storeApiKey() {
  PropertiesService.getScriptProperties()
    .setProperty('FINEXLY_API_KEY', 'YOUR_API_KEY');
}

Dopodiché elimina il valore letterale dal file. Nota i limiti documentati: il valore di una proprietà è limitato a 9 KB e un archivio di proprietà a 500 KB in totale — abbondante per una chiave, ma non è il posto dove mettere in cache dei dati.

Passo 2: una funzione personalizzata per una singola coppia

/**
 * Returns the live exchange rate for a currency pair.
 *
 * @param {string} from Base currency code, e.g. "USD".
 * @param {string} to Quote currency code, e.g. "EUR".
 * @return The exchange rate.
 * @customfunction
 */
function FX_RATE(from, to) {
  if (!from || !to) throw new Error('Both currency codes are required.');

  var pair = String(from).toUpperCase() + '_' + String(to).toUpperCase();
  var cache = CacheService.getScriptCache();
  var hit = cache.get(pair);
  if (hit !== null) return Number(hit);

  var key = PropertiesService.getScriptProperties().getProperty('FINEXLY_API_KEY');
  var res = UrlFetchApp.fetch(
    'https://api.finexly.com/v1/rate?from=' + encodeURIComponent(from) +
      '&to=' + encodeURIComponent(to),
    {
      headers: { Authorization: 'Bearer ' + key },
      muteHttpExceptions: true
    }
  );

  var code = res.getResponseCode();
  var body = JSON.parse(res.getContentText());
  if (code !== 200) {
    throw new Error(body.error ? body.error.code + ': ' + body.error.message : 'HTTP ' + code);
  }

  cache.put(pair, String(body.rate), 300); // 5 minutes
  return body.rate;
}

Usala in una cella:

=FX_RATE("USD","EUR")
=A2 * FX_RATE($B$1, $C$1)

L'endpoint /v1/rate restituisce {"pair": "USD_EUR", "rate": 0.9215}. Il riferimento completo dei parametri è nella documentazione dell'API Finexly.

Passo 3: elabora l'intervallo in batch — la parte che ogni concorrente si perde

Ecco la modalità di fallimento. Google la documenta in modo diretto:

"Ogni volta che una funzione personalizzata viene usata in un foglio di lavoro, Sheets effettua una chiamata separata al server di Apps Script. Se il tuo foglio di lavoro contiene decine (o centinaia, o migliaia!) di chiamate a funzioni personalizzate, questo processo può risultare lento."

Trascina FX_RATE per 400 righe e avrai effettuato 400 andate e ritorno. Con un limite di 30 secondi per esecuzione sulle funzioni personalizzate, incapperai in #ERROR! con la nota Exceeded maximum execution time (line 0). molto prima di esaurire la quota API.

La soluzione consigliata da Google è il batching su array: accetta un intervallo, restituisci un array. L'endpoint /v1/convert di Finexly accetta coppie separate da virgola, quindi l'intera colonna diventa una sola richiesta HTTP:

/**
 * Converts a column of amounts from one currency to another in a single API call.
 *
 * @param {A2:A400} amounts Range of amounts.
 * @param {string} from Base currency code.
 * @param {string} to Quote currency code.
 * @return {Array} Converted amounts.
 * @customfunction
 */
function FX_CONVERT_RANGE(amounts, from, to) {
  var rate = FX_RATE(from, to);           // one fetch, then cached
  var rows = Array.isArray(amounts) ? amounts : [[amounts]];
  return rows.map(function (row) {
    return row.map(function (v) {
      return (v === '' || v === null) ? '' : Number(v) * rate;
    });
  });
}
=FX_CONVERT_RANGE(A2:A400, "USD", "EUR")

Una formula, una chiamata di rete, 399 andate e ritorno in meno. Se ti servono più coppie in una volta sola, interroga /v1/convert?q=USD_EUR,USD_GBP,USD_JPY e leggi body["USD_EUR"].rate.

Cosa dice davvero Google sul caching nelle funzioni personalizzate

Sopra viene usato CacheService, ma occorre essere precisi sul perché. La guida di Google alle funzioni personalizzate classifica il servizio Cache come "Funziona, ma non è particolarmente utile nelle funzioni personalizzate." Il vantaggio del caching è reale solo tra esecuzioni distinte — ricalcoli ripetuti della stessa coppia — non all'interno di un singolo array riversato. Il batching su array è l'ottimizzazione documentata; il caching è un utile complemento.

I limiti documentati della cache: chiavi fino a 250 caratteri, valori fino a 100 KB, un tetto di 1.000 elementi e una scadenza compresa tra 1 secondo e 21.600 secondi (6 ore), con valore predefinito di 600 secondi. Non esiste una quota giornaliera pubblicata per le chiamate alla cache.

Un'altra trappola documentata, dato che il workaround circola parecchio: aggiungere NOW() come argomento per forzare l'aggiornamento rompe la funzione. Google: "Gli argomenti delle funzioni personalizzate devono essere deterministici … Se una funzione personalizzata prova a restituire un valore basato su una di queste funzioni integrate volatili, mostra Loading... all'infinito."


Metodo 3: una tabella dei tassi pianificata (lo schema per la produzione)

Le funzioni personalizzate si ricalcolano quando pare a Sheets, che è esattamente la proprietà sbagliata per un foglio letto da qualcun altro. Lo schema robusto consiste nello smettere del tutto di scaricare dati dalle celle: scrivi i tassi in una tabella secondo una pianificazione, poi vai a leggerli con formule normali.

Lo script di aggiornamento

var PAIRS = ['USD_EUR', 'USD_GBP', 'USD_JPY', 'USD_CAD', 'USD_AUD', 'USD_CHF'];

function refreshRates() {
  var key = PropertiesService.getScriptProperties().getProperty('FINEXLY_API_KEY');
  var res = UrlFetchApp.fetch(
    'https://api.finexly.com/v1/convert?q=' + PAIRS.join(','),
    { headers: { Authorization: 'Bearer ' + key }, muteHttpExceptions: true }
  );

  if (res.getResponseCode() !== 200) {
    console.error('Finexly refresh failed: ' + res.getContentText());
    return; // keep yesterday's rates rather than blanking the sheet
  }

  var data = JSON.parse(res.getContentText());
  var stamp = new Date();
  var rows = PAIRS.map(function (p) {
    return [p, p.split('_')[0], p.split('_')[1], data[p].rate, stamp];
  });

  var sheet = SpreadsheetApp.getActive().getSheetByName('Rates') ||
              SpreadsheetApp.getActive().insertSheet('Rates');
  sheet.clear();
  sheet.getRange(1, 1, 1, 5)
       .setValues([['Pair', 'From', 'To', 'Rate', 'Updated (UTC)']])
       .setFontWeight('bold');
  sheet.getRange(2, 1, rows.length, 5).setValues(rows);
}

Due dettagli che distinguono questo script da quelli che trovi altrove. Primo, una sola chiamata a setValues(), non una per cella — le scritture in batch su un intervallo sono drasticamente più veloci. Secondo, una richiesta fallita esce subito invece di svuotare la tabella, così un singhiozzo del provider lascia tassi datati ma etichettati come tali, anziché un foglio pieno di celle vuote che silenziosamente azzerano ogni totale a valle.

Creare il trigger

function installTrigger() {
  ScriptApp.getProjectTriggers().forEach(function (t) {
    if (t.getHandlerFunction() === 'refreshRates') ScriptApp.deleteTrigger(t);
  });
  ScriptApp.newTrigger('refreshRates').timeBased().everyHours(1).create();
}

Google documenta che i trigger temporizzati possono scattare "con una frequenza massima di un minuto o minima di una volta al mese" e che l'orario di attivazione è volutamente approssimato: "se crei un trigger ricorrente alle 9, Apps Script sceglie un orario compreso tra le 9 e le 10." Se usi everyMinutes(n), n deve essere 1, 5, 10, 15 o 30 — nessun altro valore viene accettato.

Leggere i tassi

=XLOOKUP("USD_EUR", Rates!A:A, Rates!D:D)
=A2 * XLOOKUP($B$1 & "_" & $C$1, Rates!A:A, Rates!D:D)

Ora ogni conversione nella cartella di lavoro si risolve istantaneamente da celle locali, usa un unico tasso coerente e porta con sé un timestamp visibile. È proprio quest'ultimo punto quello su cui i revisori fanno domande.


Quote e limiti in cui ti imbatterai davvero

Questi sono i numeri di Apps Script pubblicati da Google — vale la pena conoscerli prima di progettare qualcosa attorno a essi:

LimiteAccount consumer (gmail.com)Account Google Workspace
Chiamate URL Fetch20.000 / giorno100.000 / giorno
Tempo di esecuzione totale dei trigger90 min / giorno6 ore / giorno
Lettura/scrittura di proprietà50.000 / giorno500.000 / giorno
Durata di una funzione personalizzata30 sec / esecuzione30 sec / esecuzione
Durata di uno script6 min / esecuzione6 min / esecuzione
Trigger per utente per script2020
Lunghezza dell'URL in URL Fetch2 KB / chiamata2 KB / chiamata
Quel tetto di 2 KB sull'URL è il limite pratico al numero di coppie che puoi infilare in un singolo batch ?q= — tranquillamente più di cento, ma non illimitate.

Sul fronte API, il piano gratuito di Finexly consente 1.000 richieste al mese a 10 richieste al minuto. Un trigger orario consuma all'incirca 730 richieste al mese — dentro il piano gratuito con margine da vendere. Aggiungi una manciata di chiamate estemporanee a funzioni personalizzate e potresti volere il piano Starter; i livelli attuali sono sulla pagina dei prezzi. Nota che i tassi storici richiedono un piano a pagamento, quindi se ti servono tassi retrodatati e budget zero, GOOGLEFINANCE resta la risposta onesta per un uso personale e non professionale.

Ogni risposta include gli header X-RateLimit-Limit, X-RateLimit-Used e X-RateLimit-Units, così puoi registrare il consumo da res.getAllHeaders() e vedere arrivare un limite prima che ti colpisca.


Errori comuni e come risolverli

Cosa vediCausaSoluzione
#N/A da GOOGLEFINANCECoppia non supportata o scritta male, oppure dati storici richiesti tramite Apps Script / la Sheets APIVerifica entrambi i codici ISO; per l'automazione, usa invece un'API
#ERROR! con "Exceeded maximum execution time (line 0)."Troppe chiamate individuali a funzioni personalizzatePassa allo schema in batch FX_CONVERT_RANGE
Loading... all'infinitoNOW(), RAND() o un'altra funzione volatile passata come argomento a una funzione personalizzataRimuovila — Google la documenta come non supportata
401 UNAUTHORIZED / invalid tokenChiave API mancante o errataVerifica che la Proprietà script sia impostata e che l'header riporti Bearer <key>
429 RATE_LIMIT_EXCEEDEDRaggiunto il limite al minuto o mensileAllunga il TTL della cache, raggruppa più coppie per chiamata o passa a un piano superiore
You do not have permission to call X service.Una funzione personalizzata ha chiamato un servizio che richiede autorizzazioneSposta quella logica in una funzione eseguita da un trigger
La formula storica riversa colonne in piùComportamento documentato — i risultati storici tornano come array con intestazioniAvvolgila in INDEX(..., 2, 2)
Per schemi più avanzati su retry, backoff e invalidazione della cache in produzione, leggi la nostra guida su caching e gestione degli errori nelle currency API.


Quale metodo dovresti usare?

  • Foglio personale, consultazione rapida, nessun soldo in gioco: GOOGLEFINANCE. È gratis, immediato e la restrizione di licenza non ti tocca.
  • Una colonna di conversione in un foglio di lavoro operativo: la funzione personalizzata Apps Script in batch. Fonte dati prevedibile, nessuna ambiguità di licenza, una chiamata per intervallo.
  • Qualsiasi cosa che leggano un collega, un cliente o un revisore: la tabella dei tassi pianificata. Un unico tasso per ciclo di aggiornamento, un timestamp visibile e nessuna dipendenza da quando Sheets decide di ricalcolare.

Lavori in Excel invece che qui? I metodi equivalenti — Power Query, WEBSERVICE e il tipo di dati Valute — sono trattati in come ottenere tassi di cambio in tempo reale in Excel. Se stai ancora valutando i provider, il nostro confronto tra currency API illustra le differenze, e puoi sempre verificare un tasso con il convertitore di valuta Finexly.


Domande frequenti

Come ottengo gratis tassi di cambio in tempo reale in Google Sheets?

=GOOGLEFINANCE("CURRENCY:USDEUR") non costa nulla e non richiede alcuna configurazione. Tieni presente la limitazione d'uso dichiarata da Google — i dati "non sono destinati all'uso professionale nel settore finanziario né all'uso da parte di altri professionisti presso aziende non finanziarie" — e il fatto che i valori storici non possono essere letti tramite Apps Script o la Sheets API. Per un'alternativa con licenza a costo zero, un piano API gratuito da 1.000 richieste al mese copre comodamente un aggiornamento orario (circa 730 chiamate).

Ogni quanto GOOGLEFINANCE aggiorna i tassi di cambio?

La tabella del disclaimer di Google Finance indica un ritardo di 3 minuti per i dati sulle valute, forniti da Morningstar — non i 20 minuti ripetuti ovunque online, che sono il dato generico sulle quotazioni dei titoli associato all'attributo "price". Separatamente, Google non ha mai pubblicato ogni quanto Sheets ricalcoli la formula, quindi l'età del numero nella tua cella non è qualcosa su cui puoi fare affidamento.

Posso usare GOOGLEFINANCE dentro Apps Script?

Non per i dati storici. Google afferma: "I dati storici non possono essere scaricati né consultati tramite la Sheets API o Apps Script. Se provi a farlo, vedrai un errore #N/A." Inoltre non esiste alcun metodo GOOGLEFINANCE in nessun servizio di Apps Script — uno script può solo leggere un valore che una cella ha già calcolato. Se ti servono i tassi nel codice, chiama una currency API con UrlFetchApp.

Perché la mia formula per le valute in Google Sheets è lenta o mostra #ERROR!?

Ogni chiamata a una funzione personalizzata è un viaggio di andata e ritorno separato verso il server di Apps Script, e ogni esecuzione è limitata a 30 secondi. Centinaia di chiamate individuali andranno in timeout. Accetta un intervallo e restituisci un array, così una sola chiamata copre l'intera colonna, metti il tasso in cache e, per qualsiasi cosa pianificata, sposta la richiesta in un trigger temporizzato invece che in una cella.

Posso ottenere tassi di cambio storici in Google Sheets?

Sì, in due modi. GOOGLEFINANCE("CURRENCY:USDEUR", "close", DATE(2026,1,1), DATE(2026,1,31), "DAILY") restituisce una serie giornaliera — usa "close", dato che "price" non è un attributo storico valido, e ricorda che Google tratta le date come mezzogiorno UTC, il che può spostare un valore di un giorno. Oppure recupera i tassi storici da un'API con un piano a pagamento e scrivili in un foglio tramite un trigger: è l'unica strada che sopravvive all'automazione.


Pronto a portare nel tuo foglio di calcolo tassi di cambio con licenza e aggiornati al minuto? Ottieni la tua chiave API Finexly gratuita — senza carta di credito. Inizia con 1.000 richieste al mese su oltre 170 valute, e passa a un piano superiore quando i tuoi fogli se ne staranno stretti.

Vlado Grigirov

Senior Currency Markets Analyst & Financial Strategist

Vlado Grigirov is a senior currency markets analyst and financial strategist with over 14 years of experience in foreign exchange markets, cross-border finance, and currency risk management. He has wo...

View full profile →

Condividi questo articolo