Verwendung der EMDESK API zum Abrufen von Ausgabendaten
Die Workspace-API ermöglicht den Lesezugriff auf Ihre Spesenabrechnungen über einen sicheren Endpunkt. Sie können sich über Berichterstellungstools wie Microsoft Excel, Google Sheets oder Ihre eigenen Dashboards mit der API verbinden.
In diesem Artikel:
- Generieren und kopieren Sie Ihren API-Schlüssel
- Daten in Microsoft Excel abrufen (Power Query)
- Daten in Google Sheets abrufen (EMDESK-API)
API-Schlüssel generieren und kopieren
- Gehen Sie zu Einstellungen → Allgemein → Workspace-API
- Klicken Sie auf Neuen API-Schlüssel hinzufügen
- Kopieren Sie den generierten Token (beginnt mit eyJ...) in Ihre Zwischenablage
Dieser Token ist Ihr Bearer-Token für die Authentifizierung
Wählen Sie einen Endpunkt
Für Ausgaben verwenden Sie:
https://renaissance.api.emdesk.com/api/resource/actual-cost-entry
Dieser Endpunkt gibt eine Liste aller erfassten tatsächlichen Kosteneinträge zurück, einschließlich Feldern wie:
|
Feld
|
Typ
|
Beschreibung
|
|---|---|---|
|
id
|
Ganzzahl
|
Interne eindeutige Kennung des Kosteneintrags. Jeder Eintrag verfügt über eine stabile ID.
|
|
Projektnummerierung
|
Ganzzahl
|
Sequentielle Nummerierung, die zur Reihenfolge der Kosteneinträge innerhalb eines Projekts verwendet wird. Entspricht häufig der Reihenfolge in Berichten.
|
|
Betrag
|
Zahl (Gleitkomma)
|
Direkter Kostenbetrag, der diesem Eintrag zugeordnet ist (z. B. Personalkosten, Kosten für Unteraufträge). Vor Gemeinkosten/indirekten Kosten.
|
|
Datum
|
Zeichenfolge (ISO-Datum,
YYYY-MM-DD )
|
Startdatum der Kosten oder des Ereignisses. Wenn
end_date NULL, wird dies als Aufwand mit einem einzigen Datum behandelt.
|
|
end_date
|
Zeichenfolge oder null (ISO-Datum)
|
Enddatum des Kostenzeitraums. Wenn nicht null, werden die Kosten zeitlich über diesen Datumsbereich verteilt (wichtig für Burn-Rates, monatliche Aufschlüsselungen).
|
|
exclude_funding
|
Boolescher Wert
|
Wenn wahr: Die Finanzierung wird nicht auf diesen Eintrag angewendet (z. B. nicht förderfähige Kosten). Finanzierung = 0.
|
|
exclude_indirect
|
Boolesch
|
Wenn wahr: Indirekte Kosten/Gemeinkosten werden nicht auf diesen Eintrag angewendet.
|
|
indirekter_betrag
|
Zahl (Float)
|
Berechneter indirekter/Gemeinkostenbetrag für diesen Eintrag. Basiert häufig auf dem indirekten Finanzierungssatz × förderfähiger Betrag.
|
|
Teilnehmer
|
Zeichenfolge
|
Name der Organisation/des Partners, die/der die Kosten verursacht hat (Begünstigter, Unterauftragnehmer usw.).
|
|
Aktivität
|
Zeichenfolge
|
Arbeitspaket/Aufgabe/Aktivität, zu der diese Kosten beitragen.
|
|
Projekt
|
Zeichenfolge
|
Kurzbezeichnung des Projekts. Nur für die Berichterstattung in Multi-Projekt-Kontexten nützlich.
|
|
Förderungsrate
|
Zahl (Float 0,0–1,0)
|
Direkte Förderquote, die für diese Kostenkategorie gilt. Beispiel: 0,7 = 70 % Erstattung.
|
|
funding_rate_indirect
|
Zahl (Float 0,0–1,0)
|
Finanzierungssatz, der auf den Betrag der indirekten Kosten angewendet wird. Oft identisch mit dem Finanzierungssatz, sofern nicht ausgeschlossen.
|
|
Förderung
|
Zahl (Float)
|
Förderfähiger Direktförderungsbetrag (Betrag × funding_rate).
|
|
funding_indirect
|
Zahl (Float)
|
Förderfähiger indirekter Förderbetrag (indirekter Betrag × indirekter Fördersatz).
|
|
Gesamtfinanzierung
|
Zahl (Float)
|
Gesamtfinanzierung = Finanzierung + indirekte_Finanzierung.
|
|
Gesamtbetrag
|
Zahl (Float)
|
Gesamtkosten einschließlich indirekter Kosten = Betrag + Betrag_indirekt.
|
|
Kostenkategorie
|
Zeichenfolge (Enum)
|
Finanzkategorie der Kosten. Gängige Werte:
"Personnel" , "Subcontracting" , "Travel" , "Other" , "Equip Rate" .
|
|
Person
|
Zahl (Float)
|
Personenmonate (PM) oder ähnliche Aufwandseinheiten. Abhängig von resource_unit.
|
|
person_pd
|
Zahl (Float)
|
Personentage (PD) Äquivalent. Die Umrechnung hängt von den Einstellungen Ihres Projekts ab.
|
|
person_ph
|
Zahl (Float)
|
Personenstundenäquivalent (PH). Nützlich für detaillierte Analysen.
|
|
personnel_rate_name
|
Zeichenkette oder null
|
Name des angewandten Personalsatzes (z. B. Mitarbeiter oder gemischter Satz). Nur für Personalkategorien festlegen.
|
|
personnel_rate
|
Zahl (Float)
|
Angewandter Personalkostensatz pro PM
|
|
description
|
Zeichenfolge oder null
|
Vom Benutzer bereitgestellte Beschreibung des Kosteneintrags (Rechnungsbeschreibung, Arbeitsumfang, Anmerkungen).
|
|
Ressourceneinheit
|
Zeichenfolge oder null
|
Beispiele:
"PM" (Personenmonat), "PD" (Personentag), "PH" (Personenstunde). Null für nicht personalbezogene Kosten.
|
Die Authentifizierung erfolgt stets über:
Authorization: Bearer eyJ...(your API token)
Daten in Microsoft Excel abrufen (Power Query)
Sie können Excel direkt mit der EMDESK-API verbinden und Live-Ausgabedaten importieren. Dies funktioniert in Excel 365, 2019 oder 2016 mit Power Query (auch „Daten abrufen und transformieren” genannt).
Starten Sie eine neue Webabfrage
In Excel:
| Menüpfad |
|---|
| Daten → Daten abrufen → Aus anderen Quellen → Aus dem Internet |
Es öffnet sich ein Dialogfeld. Klicken Sie auf „Erweitert“.
Geben Sie den API-Endpunkt und den Authentifizierungsheader ein
Im Abschnitt „URL-Teile“:
https://renaissance.api.emdesk.com/api/resource/actual-cost-entry
Im Abschnitt „HTTP-Anfrage-Header-Parameter“:
| Header | Wert |
|---|---|
| Autorisierung | Bearer eyJ… (fügen Sie Ihren vollständigen API-Token ein) |
Klicken Sie auf „OK“.
Excel wird nun:
- Verbindung zum Endpunkt herstellen
- Ihr Token zur Authentifizierung verwenden
- die JSON-Daten abrufen
- den Power Query Editor öffnen
Wenn die Authentifizierung erfolgreich ist, sehen Sie entweder einen Datensatz, eine Liste oder eine Datenspalte.
Konvertieren Sie JSON in eine lesbare Tabelle
Im Power Query Editor:
- Wenn der Inhalt als Datensatz angezeigt wird, klicken Sie auf „In Tabelle“ (Registerkarte „Start“).
- Sie sehen wahrscheinlich Spalten wie „Daten“, „Zeitstempel“ oder „Status“.
- Klicken Sie auf das Symbol zum Erweitern ↔ in der Datenspalte.
-
Im Dialogfeld „Erweitern“:
Deaktivieren Sie das Kontrollkästchen „Original-Spaltennamen als Präfix verwenden“.
- Klicken Sie auf „OK“.
Sie sollten nun Ausgabenfelder wie die folgenden sehen:
| id | Projektnummerierung | Betrag | Datum | Enddatum | Teilnehmer | Finanzierung ausschließen | Ausschluss indirekter Kosten | Währung |
|---|
Formatieren Sie Ihre Daten (optional, jedoch empfohlen)
Weisen Sie in Power Query die korrekten Datentypen zu:
| Spalte | Empfohlener Datentyp |
|---|---|
| Betrag | Dezimalzahl |
| Datum / Enddatum | Datum |
| id | Text |
| Teilnehmer | Text |
Verwendung: Startseite → Datentyp
Laden Sie die Daten in Excel
Klicken Sie auf „Schließen und laden“
Ihre API-Daten werden nun in einem neuen Arbeitsblatt als formatierte Excel-Tabelle angezeigt.
Sie können nun:
✔ Filtern und sortieren
✔ Formeln oder Pivot-Tabellen verwenden
✔ Dashboards oder Diagramme erstellen
✔ Mit Ihrem Budget oder Ihrer Kostenaufstellung kombinieren
Ihre Daten jederzeit aktualisieren
So erhalten Sie aktualisierte Werte von EMDESK:
| Option | Aktion |
|---|---|
| Manuell aktualisieren | Rechtsklick auf Tabelle → Aktualisieren |
| Oder über die Multifunktionsleiste | Daten → Alle aktualisieren |
Excel stellt die Verbindung zur API wieder her und aktualisiert alle Zeilen automatisch.
🔍 Fehlerbehebung
| Problem | Ursache | Lösung |
|---|---|---|
| 401 Nicht autorisiert | Token ist falsch oder abgelaufen | Bitte generieren Sie ein neues Token unter „Einstellungen“ → „Workspace-API“. |
| Daten werden geladen, aber einige Spalten sind leer | Verschachtelte Daten nicht erweitert | Entfalten Sie die Datenspalte erneut |
| „Wir konnten die Authentifizierung nicht durchführen“ | Die Kopfzeile ist nicht korrekt formatiert | Muss beginnen mit: Bearer eyJ... |
| Falsches Datums- oder Betragsformat | Nicht als Datum oder Zahl zugewiesen | Datentyp in Power Query anwenden |
Daten in Google Sheets abrufen (EMDESK-API)
Sie können Live-Ausgabedaten aus Ihrem EMDESK-Arbeitsbereich mithilfe von Apps Script direkt in Google Sheets importieren. Die Einrichtung dauert nur wenige Minuten und kann jederzeit wiederverwendet oder aktualisiert werden.
Öffnen Sie Apps Script
In Ihrer Google Tabelle:
| Menüpfad |
|---|
| Erweiterungen → Apps Script |
Ein Code-Editor wird in einem neuen Tab geöffnet.
Fügen Sie das Skript ein
Löschen Sie den gesamten Inhalt des Editors und ersetzen Sie ihn durch das vollständige Skript unten:
const API_TOKEN = "eyJ0...Q"; // paste your API key from EMDESK
const API_ENDPOINT = "https://renaissance.api.emdesk.com/api/resource/actual-cost-entry";
const TARGET_SHEET = "ActualCostEntries";
function importEmdeskData() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getSheetByName(TARGET_SHEET);
if (!sheet) {
sheet = ss.insertSheet(TARGET_SHEET);
}
sheet.clearContents();
const options = {
method: "get",
headers: {
"Authorization": "Bearer " + API_TOKEN,
"Accept": "application/json"
},
muteHttpExceptions: true
};
const response = UrlFetchApp.fetch(API_ENDPOINT, options);
const status = response.getResponseCode();
if (status < 200 || status >= 300) {
sheet.getRange(1, 1).setValue("Error: " + status);
sheet.getRange(2, 1).setValue(response.getContentText());
return;
}
const json = JSON.parse(response.getContentText());
if (!json.data || json.data.length === 0) {
sheet.getRange(1, 1).setValue("No data returned");
return;
}
const headers = Object.keys(json.data[0]);
const rows = json.data.map(obj =>
headers.map(field => obj[field])
);
rows.unshift(headers);
sheet.getRange(1, 1, rows.length, headers.length).setValues(rows);
}
function onOpen() {
SpreadsheetApp.getUi()
.createMenu("EMDESK API")
.addItem("Import Actual Cost Entries", "importEmdeskData")
.addToUi();
}
Konfigurieren und speichern
Ersetzen Sie oben im Skript:
const API_TOKEN = "eyJ0...";
durch Ihren vollständigen API-Schlüssel von EMDESK (behalten Sie die Anführungszeichen bei).
Klicken Sie auf „Speichern“ und geben Sie Ihrem Skript einen Namen, z. B. „EmdeskImport“.
Autorisieren und ausführen
Klicken Sie in der Symbolleiste auf:
▶ importEmdeskData
Wenn Sie es zum ersten Mal ausführen, fordert Google Sie zur Erteilung von Berechtigungen auf:
Erlauben Sie den Zugriff für UrlFetchApp, damit Sheets eine Verbindung zur API herstellen kann.
Verwenden Sie das benutzerdefinierte Menü
Nachdem Sie die Tabelle gespeichert und neu geladen haben, wird ein neues Menü angezeigt:
EMDESK API → Tatsächliche Kosteneinträge importieren
Klicken Sie darauf – das Skript wird:
✔ Abrufen der Ausgabendaten aus EMDESK
✔ Das Blatt „ActualCostEntries” erstellen oder aktualisieren
✔ Alle Ausgabenfelder als Zeilen und Spalten einfügen
Aktualisieren der Daten
Sie können die Daten jederzeit aktualisieren:
| Menüpfad |
|---|
| EMDESK API → Import Actual Cost Entries |
Dadurch wird das Skript erneut ausgeführt und die Werte aus der API aktualisiert.
Optional – Automatische geplante Aktualisierung aktivieren
Sie können die Aktualisierung täglich, wöchentlich oder stündlich automatisieren:
Gehen Sie in Apps Script zu „Trigger“ → „Trigger hinzufügen“ und wählen Sie:
| Einstellung | Wert |
|---|---|
| Funktion | importEmdeskData |
| Ereignisquelle | Zeitgesteuert |
| Typ | Täglich / Stündlich / Benutzerdefiniert |
Die Daten werden nun automatisch aktualisiert.
Fehlerbehebung
| Problem | Ursache | Lösung |
|---|---|---|
| Fehler 401 | Token ungültig oder abgelaufen | Bitte generieren Sie einen neuen API-Schlüssel in EMDESK. |
| Es werden keine Daten zurückgegeben | Es liegen noch keine Ausgabenaufzeichnungen vor | Bitte geben Sie zunächst Ausgaben ein |
| Skript wird ausgeführt, aber das Blatt ist leer | Fehlende Dateneigenschaft | Bitte überprüfen Sie den Endpunkt und das Token |
| „Dienst wurde zu oft aufgerufen“ | Zu häufige Aktualisierung | Ändern Sie den Trigger auf täglich/stündlich |