Goldpreis in Google Sheets und Excel: Live-Preise per API
Live-Goldpreis in Google Sheets per Apps-Script-Funktion und in Excel per Power Query abrufen, automatisch aktualisiert und mit geschütztem API-Schlüssel.
Live-Goldpreise in einer Tabelle
Ein großer Teil der Goldpreisberechnung findet immer noch in Tabellen statt: die Preisliste eines Juweliers, ein Bestand an Barren und Münzen, ein Ankaufsblatt für Altgold oder ein Portfolio-Tracker. Mit einem Live-Goldpreis in Google Sheets oder Excel aktualisieren sich diese Zahlen von selbst, statt von einer Website kopiert zu werden. Diese Anleitung baut beides: eine benutzerdefinierte Funktion =GOLDPRICE("EUR", "gram") in Google Sheets mit Apps Script und eine Power-Query-Tabelle in Excel, beide automatisch aktualisiert und mit einem API-Schlüssel, der nicht in den Zellen steht.
Für beides ist etwas Code nötig. MetalAPI liefert JSON, und keine der beiden Tabellenkalkulationen hat eine Tabellenformel, die JSON von einer URL einliest und dabei einen API-Schlüssel im Header sendet. Apps Script und Power Query können beides.
Sie benötigen einen MetalAPI-Schlüssel: Erstellen Sie ein kostenloses Konto, ohne Kreditkarte, mit 100 Anfragen pro Monat und täglicher Preisaktualisierung. Für Excel brauchen Sie außerdem eine Version mit Power Query (Abrufen und transformieren), etwa Excel für Microsoft 365 oder Excel 2016 und neuer unter Windows. Die Preise sind so aktuell, wie Ihr Tarif es erlaubt: täglich im Free-Tarif, alle 30 Minuten im Lite-Tarif, alle 10 Minuten im Standard-Tarif und bis zu alle 5 Sekunden im Enterprise-Tarif.
Jede Antwort enthält jedes Symbol zweimal: USDXAU (oder EURXAU mit base=EUR) ist der Preis einer Feinunze Gold, und der einfache Schlüssel XAU ist dessen Kehrwert. Der Code in diesem Artikel liest immer den Schlüssel mit Präfix.
So erhalten Sie Live-Goldpreise in Google Sheets
Die Grundlage ist ein kleines Apps-Script-Projekt, das an Ihre Tabelle gebunden ist: Es liest den Schlüssel aus einer Skripteigenschaft, ruft Preise mit UrlFetchApp ab, cacht sie mit CacheService und stellt benutzerdefinierte Funktionen für Ihre Zellen bereit. Ein zeitgesteuerter Trigger hält die Preise aktuell.
- Öffnen Sie die Tabelle und wählen Sie Erweiterungen → Apps Script (Extensions → Apps Script). Dadurch entsteht ein Skriptprojekt, das an diese Datei gebunden ist.
- Öffnen Sie im Apps-Script-Editor die Projekteinstellungen (Project Settings, das Zahnradsymbol), scrollen Sie zu Skripteigenschaften (Script Properties) und klicken Sie auf Skripteigenschaft hinzufügen (Add script property). Geben Sie
METALAPI_KEYals Eigenschaft ein, fügen Sie Ihren Schlüssel als Wert ein und klicken Sie auf Skripteigenschaften speichern (Save script properties). - Ersetzen Sie zurück im Editor den Inhalt von
Code.gsdurch die beiden Codeblöcke unten und speichern Sie. - Wählen Sie im Funktionsmenü
refreshPricesund klicken Sie auf Ausführen (Run). Google bittet Sie einmalig, das Skript zu autorisieren, damit es eine Verbindung zu einem externen Dienst herstellen und die Tabelle bearbeiten darf.
Den API-Schlüssel aus den Zellen heraushalten
Fügen Sie den Schlüssel nicht in eine Zelle ein, um die URL dann per Formel zusammenzusetzen. Ein Schlüssel in einer Zelle ist für jeden sichtbar, der die Tabelle öffnen kann, wandert mit jeder Kopie und jedem Export mit und bleibt im Versionsverlauf, auch nachdem Sie ihn gelöscht haben. Wer ihn hat, kann Ihr Kontingent verbrauchen.
Skripteigenschaften sind der bessere Ort: Sie gehören nicht zum Tabellenraster und erscheinen daher weder in Zellen noch in Exporten oder im Versionsverlauf. Ein Tresor sind sie allerdings nicht. Jeder mit Bearbeitungszugriff auf die Tabelle kann Erweiterungen → Apps Script öffnen und sie lesen. Deshalb gilt:
- Verwenden Sie pro Tabelle einen eigenen Schlüssel, damit Sie ihn widerrufen können, ohne andere Integrationen zu stören. Die Anleitung zur Authentifizierung beschreibt, wie Sie Schlüssel erstellen und rotieren.
- Geben Sie Bearbeitungszugriff nur Personen, denen Sie auch den Schlüssel geben würden. Betrachter und Kommentatoren können den Skripteditor nicht öffnen, aber eine Kopie der Tabelle enthält eine Kopie des gebundenen Skripts. Deaktivieren Sie bei breit geteilten Dateien in den Freigabeeinstellungen das Kopieren für Betrachter und Kommentatoren.
- Senden Sie den Schlüssel in einem Header. Das Skript verwendet
X-API-Keystatt des Parametersapi_key, damit der Schlüssel nicht in protokollierten URLs landet. - Rotieren Sie im Zweifel: Erstellen Sie einen neuen Schlüssel, aktualisieren Sie die Skripteigenschaft und widerrufen Sie dann den alten Schlüssel im Dashboard.
Eine benutzerdefinierte GOLDPRICE-Funktion für Google Sheets
Fügen Sie dies in Code.gs ein. METALPRICE deckt die vier Edelmetalle ab, und GOLDPRICE ist eine Abkürzung für Gold. Eine Anfrage liefert alle vier Metalle, Gold und Silber in derselben Währung und Einheit teilen sich also eine gecachte Antwort.
// MetalAPI-Preise für Google Sheets. Der API-Schlüssel wird aus der
// Skripteigenschaft METALAPI_KEY (Projekteinstellungen) gelesen, nie aus einer Zelle.
const API = "https://metalapi.com/api/v1";
const SYMBOLS = ["XAU", "XAG", "XPT", "XPD"];
const CACHE_SECONDS = 3600; // 1 Stunde; Apps Script erlaubt bis zu 21600
function fetchLatest_(base, unit) {
const key = PropertiesService.getScriptProperties().getProperty("METALAPI_KEY");
if (!key) throw new Error("Add the script property METALAPI_KEY first.");
const url = API + "/latest?base=" + encodeURIComponent(base) +
"¤cies=" + SYMBOLS.join(",") + "&unit=" + encodeURIComponent(unit);
const res = UrlFetchApp.fetch(url, {
headers: { "X-API-Key": key },
muteHttpExceptions: true, // Fehlerantworten zurückgeben, statt eine Exception auszulösen
});
let data;
try {
data = JSON.parse(res.getContentText());
} catch (e) {
throw new Error("MetalAPI: unexpected HTTP " + res.getResponseCode() + " response");
}
if (!data.success) {
throw new Error("MetalAPI " + data.error.code + " (" + data.error.type + "): " + data.error.info);
}
return data;
}
function cachedLatest_(base, unit, refresh) {
const cache = CacheService.getScriptCache();
const cacheKey = ["latest", base, unit, refresh].join("|");
const hit = cache.get(cacheKey);
if (hit) return JSON.parse(hit);
const data = fetchLatest_(base, unit);
cache.put(cacheKey, JSON.stringify(data), CACHE_SECONDS);
return data;
}
/**
* Aktueller Preis eines Edelmetalls von MetalAPI.
*
* @param {string} symbol XAU (Gold), XAG (Silber), XPT (Platin) oder XPD (Palladium).
* @param {string} currency Währungscode wie USD, EUR oder GBP. Standard: USD.
* @param {string} unit troy_oz (Standard), gram oder kilogram.
* @param {any} refresh Optionale Zelle wie Prices!B1. Ändert sie sich, werden die Preise neu abgerufen.
* @return Der Preis einer Einheit des Metalls in der Währung.
* @customfunction
*/
function METALPRICE(symbol, currency, unit, refresh) {
const s = String(symbol || "XAU").trim().toUpperCase();
const base = String(currency || "USD").trim().toUpperCase();
const u = String(unit || "troy_oz").trim().toLowerCase();
const data = cachedLatest_(base, u, String(refresh || ""));
const price = data.rates[data.base + s];
if (price === undefined) throw new Error("No " + s + " price in " + base + ".");
return price;
}
/**
* Aktueller Goldpreis von MetalAPI, zum Beispiel =GOLDPRICE("EUR", "gram").
*
* @param {string} currency Währungscode wie USD, EUR oder GBP. Standard: USD.
* @param {string} unit troy_oz (Standard), gram oder kilogram.
* @param {any} refresh Optionale Zelle wie Prices!B1. Ändert sie sich, werden die Preise neu abgerufen.
* @return Der Goldpreis in der Währung pro Einheit.
* @customfunction
*/
function GOLDPRICE(currency, unit, refresh) {
return METALPRICE("XAU", currency, unit, refresh);
}Geben Sie nun in eine beliebige Zelle eine Formel ein. Verwendet Ihre Tabelle ein deutsches Gebietsschema, trennen Sie die Argumente mit Semikolons statt mit Kommas:
| Formel | Ergebnis |
|---|---|
=GOLDPRICE() | Gold in US-Dollar pro Feinunze |
=GOLDPRICE("EUR", "gram") | Gold in Euro pro Gramm |
=GOLDPRICE("GBP", "kilogram") | Gold in Pfund Sterling pro Kilogramm |
=METALPRICE("XAG", "USD", "troy_oz") | Silber in US-Dollar pro Feinunze |
Hinter den Kulissen:
@customfunctionnimmt die Funktionen in die automatische Vervollständigung von Formeln auf, mit dem Kommentar als Hilfetext.muteHttpExceptions: truegibt Fehlerantworten zurück, statt eine Exception auszulösen. Die Zelle zeigt dann#FEHLER!(#ERROR!) an, und beim Darüberfahren erscheinen Code und Meldung von MetalAPI, etwa201(invalid_base) für eine unbekannte Währung.CacheServicespeichert jede Antwort fürCACHE_SECONDS, höchstens sechs Stunden. Zellen mit derselben Währung, Einheit und demselben Refresh-Wert teilen sie sich.- Jede nicht gecachte Kombination aus Währung und Einheit kostet eine Anfrage, und jede Formelzelle ist ein eigener Aufruf an die Server von Google. Bei Tabellen mit Hunderten von Preiszellen verweisen Sie stattdessen auf das Tabellenblatt
Pricesweiter unten.
Validierungsfehler wie eine unbekannte Währung werden berechnet, korrigieren Sie fehlerhafte Formeln also zügig. Die Anleitung zu Anfragelimits listet auf, was zählt.
Den Goldpreis in Google Sheets per zeitgesteuertem Trigger aktualisieren
Google Sheets führt eine benutzerdefinierte Funktion erneut aus, wenn sich ihre Argumente ändern, nicht nach der Uhr. Die Einstellung zur Neuberechnung unter Datei → Einstellungen → Berechnung (File → Settings → Calculation) wirkt sich nur auf Funktionen wie NOW und RAND aus. Für planmäßige Aktualisierungen lassen Sie einen zeitgesteuerten Trigger die Preise in ein Tabellenblatt schreiben. Fügen Sie dies unter Teil 1 ein:
/** Schreibt die aktuellen Preise in ein Tabellenblatt namens "Prices". Über einen zeitgesteuerten Trigger ausführen. */
function refreshPrices() {
const data = fetchLatest_("USD", "troy_oz");
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("Prices") || ss.insertSheet("Prices");
const rows = [
["Updated", new Date(data.timestamp * 1000)],
["Symbol", data.base + " per troy oz"],
];
SYMBOLS.forEach(function (s) {
rows.push([s, data.rates[data.base + s]]);
});
sheet.getRange(1, 1, rows.length, 2).setValues(rows);
}
/** Einmal im Editor ausführen. Ersetzt einen bestehenden Zeitplan für refreshPrices. */
function installTrigger() {
ScriptApp.getProjectTriggers().forEach(function (t) {
if (t.getHandlerFunction() === "refreshPrices") ScriptApp.deleteTrigger(t);
});
ScriptApp.newTrigger("refreshPrices").timeBased().everyHours(1).create();
}Führen Sie installTrigger einmal im Editor aus, oder fügen Sie den Trigger von Hand unter Trigger (Triggers, das Uhrsymbol) → Trigger hinzufügen (Add Trigger) mit refreshPrices, Zeitgesteuert (Time-driven) und einem Intervall hinzu.
Jeder Lauf kostet eine Anfrage und schreibt den Zeitpunkt der Daten nach Prices!B1 und darunter eine Zeile pro Metall; Prices!B3 ist Gold in US-Dollar pro Feinunze. Verweisen Sie direkt auf diese Zellen oder übergeben Sie Prices!B1 als Refresh-Argument: =GOLDPRICE("EUR", "gram", Prices!B1) ruft die Preise jedes Mal neu ab, wenn der Trigger einen neuen Datenzeitpunkt schreibt, einmal pro Währung und Einheit, und am Wochenende gar nicht, weil sich der Zeitpunkt dann nicht ändert. Für das Blatt Prices in einer anderen Währung oder Einheit ändern Sie die Argumente von fetchLatest_ in refreshPrices.
Passen Sie das Intervall an Ihren Tarif an; häufiger zu aktualisieren, als sich die Preise ändern, wiederholt sie nur:
| Tarif | Preisaktualisierung | Trigger | Trigger-Anfragen / Monat |
|---|---|---|---|
| Free (100 Anfragen) | Täglich | .everyDays(1).atHour(6) | Etwa 31 |
| Lite (1.000 Anfragen) | Alle 30 Minuten | .everyHours(1) | Etwa 744 |
| Standard (10.000 Anfragen) | Alle 10 Minuten | .everyMinutes(10) | Etwa 4.500 |
Benutzerdefinierte Funktionen mit Refresh-Argument verursachen pro Aktualisierung eine zusätzliche Anfrage für jede Kombination aus Währung und Einheit. Im Lite-Tarif kann ein stündlicher Trigger zusammen mit GOLDPRICE("EUR", "gram", Prices!B1) etwa 1.500 Anfragen im Monat erreichen, mehr als die 1.000 des Tarifs; verwenden Sie dann .everyHours(2) oder nur das Blatt Prices. Trigger laufen ungefähr, nicht exakt zum geplanten Zeitpunkt, und atHour verwendet die Zeitzone des Skripts.
Goldpreis in Excel mit Power Query
In Excel ruft Power Query die API auf, verarbeitet das JSON und lädt eine Tabelle, die sich nach Zeitplan aktualisiert:
- Wählen Sie auf der Registerkarte Daten (Data) Daten abrufen → Aus anderen Quellen → Leere Abfrage (Get Data → From Other Sources → Blank Query).
- Wählen Sie im Power Query-Editor Start → Erweiterter Editor (Home → Advanced Editor), fügen Sie die Abfrage unten ein und klicken Sie auf Fertig (Done).
- Wenn Sie gefragt werden, wie die Verbindung zu
https://metalapi.com/hergestellt werden soll, klicken Sie auf Anmeldeinformationen bearbeiten (Edit Credentials), wählen Sie Web-API (Web API), fügen Sie Ihren Schlüssel in das Feld Schlüssel (Key) ein und klicken Sie auf Verbinden (Connect). - Benennen Sie die Abfrage in
GoldPricesum und wählen Sie Start → Schließen & laden (Home → Close & Load). Excel lädt sie in ein neues Tabellenblatt, als Tabelle mit dem Namen der Abfrage.
let
BaseCurrency = "EUR",
MassUnit = "gram",
Symbols = {"XAU", "XAG", "XPT", "XPD"},
Response = Json.Document(
Web.Contents(
"https://metalapi.com/api/v1/latest",
[
Query = [base = BaseCurrency, currencies = Text.Combine(Symbols, ","), unit = MassUnit],
ApiKeyName = "api_key"
]
)
),
Updated = #datetime(1970, 1, 1, 0, 0, 0) + #duration(0, 0, 0, Response[timestamp]),
Prices = Table.FromRecords(
List.Transform(
Symbols,
(symbol) => [
Symbol = symbol,
Price = Record.Field(Response[rates], Response[base] & symbol),
Currency = Response[base],
Unit = MassUnit,
#"Updated (UTC)" = Updated
]
)
),
Typed = Table.TransformColumnTypes(
Prices,
{{"Symbol", type text}, {"Price", type number}, {"Currency", type text},
{"Unit", type text}, {"Updated (UTC)", type datetime}}
)
in
TypedDie Abfrage liest den Schlüssel mit dem base der Antwort als Präfix (EURXAU für EUR) und wandelt den Unix-timestamp in UTC um. Passen Sie BaseCurrency und MassUnit nach Bedarf an.
ApiKeyName = "api_key" hält den Schlüssel aus der Datei heraus: Power Query entnimmt ihn den Web-API-Anmeldeinformationen und hängt ihn als Query-Parameter api_key an, eine der drei Arten, auf die MetalAPI einen Schlüssel akzeptiert. Die Anmeldeinformationen liegen in den Datenquelleneinstellungen von Excel auf Ihrem Computer, nicht in der Arbeitsmappe. Ein Kollege, der die Datei öffnet, wird daher nach seinem eigenen Schlüssel gefragt. Ändern oder entfernen Sie sie unter Daten → Daten abrufen → Datenquelleneinstellungen (Data → Get Data → Data Source Settings).
Web.Contents akzeptiert auch Headers = [#"X-API-Key" = "..."], speichert den Schlüssel dann aber in der Arbeitsmappe. Verwenden Sie das nur für Dateien, die Ihren Computer nie verlassen.
In Formeln suchen Sie die Preise in der Tabelle nach: =XVERWEIS("XAU"; GoldPrices[Symbol]; GoldPrices[Price]) (in der englischen Version XLOOKUP) liefert Gold in Euro pro Gramm, und INDEX mit VERGLEICH (MATCH) leistet dasselbe in älteren Versionen.
Goldpreise in Excel automatisch aktualisieren
Eine Power-Query-Tabelle aktualisiert sich nicht von selbst. Öffnen Sie Daten → Abfragen und Verbindungen (Data → Queries & Connections), klicken Sie mit der rechten Maustaste auf die Abfrage GoldPrices und wählen Sie Eigenschaften (Properties). Unter Aktualisierungssteuerung (Refresh control):
- Aktualisieren alle N Minuten (Refresh every N minutes) führt die Abfrage nach einem Timer erneut aus.
- Daten beim Öffnen der Datei aktualisieren (Refresh data when opening the file) ruft bei jedem Öffnen der Arbeitsmappe aktuelle Preise ab.
- Hintergrundaktualisierung aktivieren (Enable background refresh) hält Excel bedienbar, während die Abfrage läuft.
Daten → Alle aktualisieren (Data → Refresh All, Strg+Alt+F5) aktualisiert auf Abruf. Der Timer läuft nur, solange die Arbeitsmappe geöffnet ist.
Jede Aktualisierung ist eine Anfrage. Stündlich während eines achtstündigen Arbeitstags ergibt das etwa 180 Anfragen im Monat, alle 10 Minuten etwa 1.050. Im Free-Tarif, in dem die Preise täglich aktualisiert werden, genügt die Aktualisierung beim Öffnen der Datei.
Historische Goldpreise in Sheets und Excel
Vergangene Schlusskurse liefert /timeframe: ein Eintrag pro Handelstag zwischen start_date und end_date, bis zu 30 Tage pro Anfrage im Free-Tarif und 365 in kostenpflichtigen Tarifen. In Excel liefert eine zweite Abfrage eine Datumsspalte und eine Spalte pro Metall:
let
Response = Json.Document(
Web.Contents(
"https://metalapi.com/api/v1/timeframe",
[
Query = [start_date = "2026-09-24", end_date = "2026-10-23", currencies = "XAU,XAG"],
ApiKeyName = "api_key"
]
)
),
Days = Record.ToTable(Response[rates]),
History = Table.FromRecords(
List.Transform(
Table.ToRecords(Days),
(row) => [
Date = Date.FromText(row[Name]),
Gold = Record.FieldOrDefault(row[Value], Response[base] & "XAU", null),
Silver = Record.FieldOrDefault(row[Value], Response[base] & "XAG", null)
]
)
),
Typed = Table.TransformColumnTypes(History, {{"Date", type date}, {"Gold", type number}, {"Silver", type number}})
in
TypedWochenenden und Börsenfeiertage fehlen, rechnen Sie also mit weniger Zeilen als Kalendertagen. Rufen Sie in Apps Script /timeframe mit UrlFetchApp so auf, wie fetchLatest_ den Endpunkt /latest aufruft, und schreiben Sie alle Zeilen mit einem einzigen setValues-Aufruf.
Vergangene Schlusskurse ändern sich nie. Laden Sie einen Zeitraum daher einmal und bewahren Sie ihn auf. Historische Gold- und Silberpreise per API behandelt das Nachladen langer Zeiträume, die Speicherung und Charts.
Nächste Schritte
Erstellen Sie ein kostenloses Konto, hinterlegen Sie den Schlüssel als Skripteigenschaft oder als Web-API-Anmeldeinformation, und Sie haben in etwa zehn Minuten einen Goldpreis in Ihrer Tabelle. Die täglichen Preise des Free-Tarifs eignen sich für eine tägliche Preisliste oder ein Portfolio-Blatt; für aktuellere Preise oder mehr Aktualisierungen vergleichen Sie die Tarife auf der Preisseite. Die API-Dokumentation listet alle Endpunkte auf, die Sie auf dieselbe Weise aufrufen können, darunter /convert und, in kostenpflichtigen Tarifen, /carat für Goldpreise nach Karat.
Häufige Fragen
Kann ich Goldpreise stattdessen mit IMPORTDATA oder IMPORTXML importieren?
Nicht von MetalAPI. Diese Funktionen lesen CSV, TSV, XML oder HTML, die API liefert aber JSON. Außerdem können sie keinen Header senden, der Schlüssel stünde also für jeden Betrachter sichtbar in der Formel.
Wie oft wird der Goldpreis in meiner Tabelle aktualisiert?
So oft, wie Sie ihn aktualisieren und Ihr Tarif es erlaubt: täglich im Free-Tarif, alle 30 Minuten im Lite-Tarif, alle 10 Minuten im Standard-Tarif und schneller in höheren Tarifen. Von Freitag 17:00 bis Sonntag 17:00 New Yorker Zeit ist der Spotmarkt geschlossen, und der Preis bleibt auf dem Schlusskurs vom Freitag.
Wie viele API-Anfragen verbraucht meine Tabelle?
Eine pro Aktualisierung des Blatts Prices oder der Power-Query-Tabelle, plus eine pro Währung und Einheit, wenn benutzerdefinierte Funktionen frische Preise abrufen. Ein stündlicher Trigger ergibt etwa 744 Anfragen im Monat, ein täglicher etwa 31. /usage meldet Ihren Verbrauch, ohne auf das Kontingent angerechnet zu werden.
Kann ich eine Tabelle, die Goldpreise abruft, sicher teilen?
Ja, wenn der Schlüssel nicht in den Zellen steht: in Google Sheets als Skripteigenschaft, mit Bearbeitungszugriff nur für Personen, denen Sie den Schlüssel anvertrauen, und in Excel als Web-API-Anmeldeinformation. Verwenden Sie pro geteilter Datei einen eigenen Schlüssel, damit Sie ihn einzeln widerrufen können.
Kann ich den Goldpreis pro Gramm oder in meiner Landeswährung abrufen?
Ja. Übergeben Sie einen Währungscode und gram oder kilogram, etwa =GOLDPRICE("INR", "gram"), oder ändern Sie BaseCurrency und MassUnit in der Power Query. Die API rechnet beides aus demselben Snapshot um.
Probieren Sie es mit Ihren eigenen Daten aus
Erstellen Sie ein kostenloses Konto und senden Sie Ihre erste Anfrage in unter zwei Minuten. 100 Anfragen pro Monat, keine Kreditkarte.
Weiterlesen
XAU/USD Bedeutung: Wofür XAU, XAG, XPT und XPD stehen
XAU/USD einfach erklärt: warum Gold einen ISO-4217-Währungscode hat, wofür XAG, XPT und XPD stehen und wie Sie die Kursrichtung in Preisen und API-Daten lesen.
Kostenlose Goldpreis-API: Was 100 Anfragen im Monat leisten
Kostenlose Goldpreis-API ehrlich erklärt: was der Free-Tarif von MetalAPI enthält, wie 100 Anfragen im Monat mit Caching reichen und wann ein Upgrade lohnt.
Goldpreis-API in Python: Preise abrufen, cachen und plotten
Goldpreis-API in Python nutzen: Live-Goldpreise mit requests abrufen, Fehler und Wiederholungen behandeln, Antworten cachen und Zeitreihen mit pandas plotten.