Excel-Tabelle mit Daten aus i-doit befüllen (veraltet)#
Mit wenigen Zeilen Visual Basic lassen sich beliebige Inhalte aus i-doit auslesen und in Microsoft Excel darstellen. In diesem Artikel erklären wir die Vorgehensweise anhand von Reports.
veraltet
Bitte beachten Sie, dass der Artikel aus 2018 stammt und bisher nicht mit der aktuellen Version von i-doit getestet wurde.
Installation#
-
Download https://github.com/VBA-tools/VBA-JSON/releases und entpacken
-
In Excel ein neues Dokument aufmachen
-
Alt + F11 drücken um in den VBA Editor zu gelangen
-
Den VBA-JSON Code wie im Gif gezeigt importieren
-
Unter Extras/Verweise Die
Microsoft Scripting Runtime
aktivieren -
In i-doit in den Einstellungen unter
Interfaces/external data -> JSON-RPC-API
Die EinstellungenConsider authorization system
in JSON-RPC API context sowieAPI access requires authentication
(method idoit.login) ausschalten: -
Code in die Arbeitsmappe einfügen und sowohl URL als auch apikey anpassen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
Code Erläuterung#
Im ersten Teil werden die notwendigen Variablen deklariert:
1 2 3 |
|
Anschließend wird ein Objekt vom Typ MSXML2.XMLHTTP initiiert, um die HTTP Verbindung aufbauen zu können
1 |
|
Hier wird die Ziel URL der anzusprechenden API eingetragen
1 |
|
Und nun wird der API Call vorbereitet. Es wird die Methode cmdb.reports aufgerufen und der Report mit der Nummer 2 abgefragt.
Es wird keine Benutzer/Passwort-Authentifizierung verwendet, sondern nur der API-Key. Damit das funktioniert, müssen die unter 6.) gezeigten Einstellungen vorgenommen werden.
Bei der Formatierung des JSON Strings müssen alle Anführungszeichen innerhalb des JSON Strings doppelt gesetzt werden.
1 |
|
Diese Anweisungen führen den HTTP POST Request aus und senden den angegebenen JSON String an die API
1 2 3 |
|
Der von der API zurückgesendete JSON String wird in ein Objekt geleitet und "auseinandergenommen". Das übernimmt die von github heruntergeladene JSON VBA Bibliothek.
1 |
|
Diesen Zähler benötigen wir, um die verschiedenen Spalten im Sheet anzusprechen
1 |
|
Der zurückgegebene JSON String hat zwei Ebenen (Inhalt zur besseren Ansicht gekürzt):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
Dieser Output lässt sich übrigens mit dem auskommentieren der Zeile
1 |
|
in dem Direktbereich des VBA Editors erzeugen.
In der ersten Ebene, die wir garnicht zu Gesicht bekommen, stehen die Werte "jsonrpc", "result" und "id". Da wir uns nur für die Ergebnisse interessieren, werden die Werte aus der zweiten Ebene, die sich unterhalb von "result" befinden in eine Schleife genommen.
1 |
|
In den Daten finden wir die Titel der Spalten aus dem angesteuerten Report mit der ID 2 wieder.
Nun werden je Datensatz im Result-Set die Titel adressiert und in eine Excel-Zeile geschrieben.
1 2 3 4 5 6 7 8 |
|