Zum Inhalt springen

Verarbeitung übergroßes JSON | HTTP-Get-Request + HTTP-Post-Request | Excel VBA


Daniel Michalek

Empfohlene Beiträge

Hallo zusammen!

Folgende Aufgaben/Fragestellungen habe ich als Noob bereits erfolgreich mit Excel gelöst.

Szenario 1:

  • Mit Prowerquerry einen Datensatz abgerufen und entsprechende Tabelle erzeugt.
  • Die Tabelleninhalte mittels VBA in ein Json geschrieben und per HTTP-Post-Request an die API geschickt und eine Aufgabe erzeugt.

Szenario 2:

  • Per VBA einen HTTP-Get-Request ausgeführt und einen Datensatz als Json in eine Excel-Zelle geschrieben.
  • Per VBA wieder den abgespeicherten Json-String als Post-Request an die API geschickt und eine Aufgabe angelegt.

Das Ganze habe ich zum Üben mit einer recht schlanken Smap gemacht. Was mich dann jetzt zu dem Grund meiner Kopfschmerzen bzw. Frage führt.

Ich habe eine Smap mit ca. 2.300 Datenbausteinen und 15 Wiederholungsgruppen. Leider auch keine schlanken Wiederholungsgruppen. Wenn ich für diese Smap einen einigermaßen vollständig ausgefüllten Datensatz abrufen möchte, passen die Daten leider nicht in ein einziges Json.

Woher weiß ich wie viele Json-Arrays auf mich warten bei einem Get-Request und wie kann ich diese Arrays nacheinander abrufen und evtl. sogar zu einem wieder zusammensetzen?

Viel wichtiger wird für mich aber noch der Umgang bei einem Post-Request. Wie kann ich mehrere Jsons an die API schicken und die API darauf vorbereiten das mehrere Jsons auf dem Weg sind?

Es geht leider aktuell auch nur mit Excel/VBA.

Der VBA Code für den Get-Request hab ich angefügt. Er beinhaltet auch den Versuch mehrere Jsons abzurufen. Benötigt wird auch: GitHub - VBA-tools/VBA-JSON: JSON conversion and parsing for VBA

 

Mit der Hoffnung auf Hilfe verbleibe ich mit vielen Grüßen und einem Danke vorab,

Daniel

 

VBA Code.txt

Bearbeitet von Daniel Michalek
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi @Bülent Erbas,

limit = 1000 legt die maximale Zeichenanzahl  fest die mit jeder Anfrage an die API abgerufen werden soll. Die Schleife wird so lange durchlaufen bis die Zeichenkette ("antwort"), sprich das json-String nicht mehr 1000 Zeichen lang ist.

Warum 1000? Ich meine ein Json-Array ist auf diese Zeichenanzahl begrenzt. 

Ich hab mir bei dem Code von ChatGPT helfen lassen. Vielleicht liegt die Begründung der 1000 auch ganz woanders. 😉 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie viele Zeichen genau zusammenkommen kann ich nicht sagen, aber deutlich über 100.000.

Ich habe gerade nochmal genauer nachgeschaut. Die Länge des Jsons das ich abrufe liegt bei 101.172 Zeichen (Die Smap ist aber nicht vollständig ausgefüllt).

Dank deiner letzten Antwort habe ich mal überlegt wo denn dann die Begrenzung liegen könnte. Kommt ja nur die API von SmapOne oder Excel in frage.

Habe dann mal nachgeschaut wie viele Zeichen eigentlich eine Zelle in Excel verkraften kann...das sind "nur" ca. 32.700.  

Meine Vermutung das Json reicht für die abgerufenen Daten nicht aus, ist also falsch. Es liegt an Excel. Dann muss ich entweder das Json in eine .txt schreiben lassen oder auf mehrere Zellen in Excel aufteilen.  

Ich dank dir auf jeden Fall für den Gedankenanstoß!

 

  • Like 2
Link zu diesem Kommentar
Auf anderen Seiten teilen

@Daniel Michalek

vor 16 Stunden schrieb Daniel Michalek:

Habe dann mal nachgeschaut wie viele Zeichen eigentlich eine Zelle in Excel verkraften kann...das sind "nur" ca. 32.700. 

Hast du vor alle Zeichen in eine Zelle zu packen? Normalerweise hast du ja pro Baustein eine Spalte in Excel.

Lt. Microsoft sollte hier eigentlich dann auch genügend Luft für deine Daten sein:

image.png.f446178535e0504151c68f37064763e5.png

Bearbeitet von Bülent Erbas
  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

@Bülent Erbas Danke für deine Antwort!

Da wir mit der Smap wiederkehrende Prüfungen durchführen und wir den Datensatz der Erstprüfung fast unverändert bei der nächsten Prüfung brauchen, war eine Idee von mir das Json als String wegzuschreiben und bei der nächsten Prüfung "einfach" wieder einzulesen.  
Da ich noch neu in dem ganzen Themenfeld bin war das speichern in einer Excel-Zelle ein erster Versuch.  Und wir haben aktuell nur Excel als Boardmittel.

Natürlich hab ich mit Prowerquerry auch schon gearbeitet und so den Datensatz in Tabellenform erzeugt. Nur leider ist der Weg von der Tabellenform zurück in ein Json für den HTTP-Request für mich nicht ganz so einfach zu lösen.  Oder gibt es da einen Trick den ich einfach nicht kenne?

  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Bitte melde Dich an, um einen Kommentar zu hinterlassen

Du kannst nach der Anmeldung einen Kommentar hinterlassen



Jetzt anmelden
×
×
  • Neu erstellen...