Mehrere Calls im SpreadsheetUrlDownload funktionieren nicht

Hallo,

ich versuche gerade mit dem SpreadsheetUrlDownload mehrere Calls hintereinander zu machen.
Hierfür werden die Daten aus Shopware gezogen und anschließend in den requestBody gepackt:

<#list meta.output@SpreadsheetFilter_5.getRows() as row> 
{
"parcel": {
    "name": "${row.get("ShippingFirstName")!}",
    "company_name": "${row.get("ShippingCompany")!}",
    "address": "${row.get("ShippingStreet")!}",
    "house_number": "${row.get("ShippingStreetNumber")!}",
    "city": "${row.get("ShippingCity")!}",
    "postal_code": "${row.get("ShippingZipCode")!}",
    "telephone": "${row.get("ShippingPhone")!}",
    "request_label": true,
    "email": "Mail",
    "country": "DE",
    "shipment": {
      "id": 89
    },
    "weight": "10.000",
    "order_number": "${row.get("OrderNumber")!}",
    "total_order_value_currency": "EUR",
    "total_order_value": "11.11",
    "quantity": 1
  }
}
</#list>

Das funktioniert auch, wenn ich nur eine Bestellung abrufe, ab der zweiten wirft es immer einen Fehler:

HTTP status: 400 (Bad Request), Response Content: {"error":{"code":400,"request":"api/v2/parcels","message":"JSON parse error - Extra data: line 23 column 1 (char 461)"}}

Woran liegt das?

Vielen Dank im Voraus für die Hilfe!

Robin

Hallo Robin,

das template für den requestBody sieht auf den 1. Blick korrekt aus. Kannst du bitte mal in der Vorschau des SpreadsheetUrlDownload Steps schauen, wie der tatsächliche übertragene requestBody beim 2. Request (2. Zeile) aussieht.

image

Viele Grüße
Torsten

Hallo Torsten,

hab das mal mit zwei Bestellungen durchlaufen lassen, die beiden requestBodys sind identisch aufgebaut und zeigen die gleiche Fehlermeldung.

Viele Grüße
Robin

Hallo Robin,

das

habe ich vorhin völlig übersehen. Ich nehme mal an das output@SpreadsheetFilter_5 das input Spreadsheet vom SpreadsheetUrlDownload Step ist. Der SpreasheetUrlDownload „läuft“ dann über jede Zeile des input Spreadsheets und macht jeweils einen Call (bei batchSize = 1). Die Werte der einzelnen Spalten (der aktuellen Zeile) stehen direkt als Freemarker Variable zur Verfügung.

Dein Template müsste vermutlich folgendermaßen aussehen:

{
"parcel": {
    "name": "${ShippingFirstName!}",
    "company_name": "${ShippingCompany!}",
    "address": "${ShippingStreet!}",
    "house_number": "${ShippingStreetNumber!}",
    "city": "${ShippingCity!}",
    "postal_code": "${ShippingZipCode!}",
    "telephone": "${ShippingPhone!}",
    "request_label": true,
    "email": "Mail",
    "country": "DE",
    "shipment": {
      "id": 89
    },
    "weight": "10.000",
    "order_number": "${OrderNumber!}",
    "total_order_value_currency": "EUR",
    "total_order_value": "11.11",
    "quantity": 1
  }
}

Viele Grüße
Torsten

1 Like

Hallo Torsten,

danke für die Hilfe, das war tatsächlich das Problem. Nun läuft es reibungslos.

Viele Grüße
Robin

1 Like