Zugriff auf JSON Script mit Array über item Funktion?
Hallo,
ich taste mich mit ninox weiter voran, habe nun aber ein Problem mit einer API-Abfrage, bei der ich nicht weiterkomme. Ich habe auf einen Button das nachfolgende Script gelegt, welches auch grundsätzlich funktioniert (getestet in Postman). Die Rückmeldung, die über ein JSON-Objekt erfolgt, möchte ich nun in die Tabelle "Projektaufgaben" übernehmen. Für jeden Datensatz in dem Array soll ein neuer Datensatz in der Tabelle "Projektaufgaben" angelegt werden. Ich komme aber mit dem Zugriff auf die einzelnen Datensätze im Array nicht klar. Nach der Dokumentation müsste das ja über den Befehl item möglich sein. Was mache ich hier falsch?
let response := http("GET", url + PId, headers, body);
for item in response do
let new := (create Projektaufgaben);
new.(ProjektNummer := text(item(item.projectNumber, 0)));
new.('Beschreibung Teilaufgabe' := item(item.name, 0));
if response.error then
alert(text(response.error))
else
alert(text(response.result))
end
end
end
JSON-Rückmeldung auf Abfrage in Postman:
{
"result": [
{
"id": "122554",
"version": "1",
"allowTimeTracking": true,
"assignedTeamMemberId": "122558",
"assignedTeamMembers": [
{
"id": "122558"
}
],
"createdDate": 1567502685522,
"effortPlanned": 0,
"endDate": 1564092000000,
"lastModifiedDate": 1567502685533,
"name": "Pressearbeit",
"positionNumber": 0,
"priority": "MEDIUM",
"projectId": "122551",
"projectNumber": "1024",
"responsibleTeamMemberId": "122558",
"startDate": 1564092000000,
"status": "OPEN",
"type": "TASK"
},
{
"id": "122555",
"version": "1",
"allowTimeTracking": true,
"assignedTeamMemberId": "122558",
"assignedTeamMembers": [
{
"id": "122558"
}
],
"createdDate": 1567502685522,
"effortPlanned": 0,
"endDate": 1564092000000,
"lastModifiedDate": 1567502685533,
"name": "Consulting",
"positionNumber": 1,
"priority": "MEDIUM",
"projectId": "122551",
"projectNumber": "1024",
"responsibleTeamMemberId": "122558",
"startDate": 1564092000000,
"status": "OPEN",
"type": "TASK"
},
{
"id": "122556",
"version": "1",
"allowTimeTracking": true,
"assignedTeamMemberId": "122558",
"assignedTeamMembers": [
{
"id": "122558"
}
],
"createdDate": 1567502685523,
"effortPlanned": 0,
"endDate": 1564092000000,
"lastModifiedDate": 1567502685533,
"name": "Vertriebsunterstützung",
"positionNumber": 2,
"priority": "MEDIUM",
"projectId": "122551",
"projectNumber": "1024",
"responsibleTeamMemberId": "122558",
"startDate": 1564092000000,
"status": "OPEN",
"type": "TASK"
},
{
"id": "122557",
"version": "1",
"allowTimeTracking": true,
"assignedTeamMemberId": "122558",
"assignedTeamMembers": [
{
"id": "122558"
}
],
"createdDate": 1567502685523,
"effortPlanned": 0,
"endDate": 1564092000000,
"lastModifiedDate": 1567502685533,
"name": "Vertrieb",
"positionNumber": 3,
"priority": "MEDIUM",
"projectId": "122551",
"projectNumber": "1024",
"responsibleTeamMemberId": "122558",
"startDate": 1564092000000,
"status": "OPEN",
"type": "TASK"
}
]
}
3 Antworten
-
findet er denn ITEM in response? oder liegen die Array-Items in response.result? Versuchs mal damit... for item in response.result do
-
Ja, result ist hier obligatorisch.
---
let response := do as server
http("GET", url + PId, headers, body)
end;
if response.error then
alert(text(response.error))
else
for i in response.result do
let new := (create Projektaufgaben);
new.(ProjektNummer := text(i.projectNumber);
new.('Beschreibung Teilaufgabe' := i.name;
end
alert("Es wurden "+cnt(response.result)+" Projekte angelegt")
end
---
Leo
-
Danke für die Unterstützung!
Ich habe es jetzt lösen können und das Script funktioniert. Problem war in der Tat der Response seitens der externen API. Nachdem ich den Response in ein ninox Feld geschrieben habe, ist mir das aufgefallen.
Content aside
-
1
„Gefällt mir“ Klicks
- vor 3 JahrenZuletzt aktiv
- 3Antworten
- 705Ansichten