Zeiteinträge nach "Toggle Track" kopieren
Hallo zusammen,
ich versuch gerade erfolglos meine in Ninox erstellten Zeiteinträge nach Toggl Track zu kopieren. Beim Anlegen eines Zeiteintrages in Ninox soll dieser auch automatisch oder über einen Button in Toggl erstellt werden.
In der API-Doku von Toggl steht folgendes:
curl -v -u 1971800d4d82861d8f2c1651fea4d212:api_token \
-H "Content-Type: application/json" \
-d '{"time_entry":{"description":"New time entry","created_with":"API example code","start":"2012-02-12T15:35:47+02:00","duration":1200,"wid":31366}}' \
-X POST https://api.track.toggl.com/api/v8/time_entries
- API-Key hab ich meinen eigenen Eingesetzt (die im Code ist aus dem Beispiel)
- Die wID hab ich mir mit Make auslesen können.
let myMethod := "POST";
let myURL := "https://api.track.toggl.com/api/v8/time_entries";
let myHeaders := {
'api_token': "1971800d4d82861d8f2c1651fea4d212",
'Content-Type': "application/json"
};
let myBody := {
description: "New time entry",
created_with: "API example code",
start: format(now(), "YYYY-MM-DD HH:mm:ss"),
duration: 1200,
wid: 31366
} ;
Result := do as server
http(myMethod, myURL, myHeaders, myBody)
end;
Im Feld "Result" bekomm ich aber einfach nur [object Object] ausgegeben. Ein Zeiteintrag wird nicht erstellt.
GET Abfragen um z.B. Workspace Infos abzurufen ergeben ebenfalls [object Object].
Komm leider nicht weiter, in Make sieht man leider auch nicht, was da genau an Toggl geschickt wird.
Hatte jemand schonmal mit Toggl gearbeitet oder weiß wie die curl-"Vorgabe" richtig zu übersetzen ist?
Vielen Dank im Voraus!
LG
Johannes
4 Antworten
-
Einen Fehler hab ich gefunden
Es muss natürlich lauten:Result := do as server formatJSON(http(myMethod, myURL, myHeaders, myBody))
In Result bekomme ich jetzt {"error":"Request has failed: error - "} eingetragen.
Aber die Autorisierung bekomme ich trotzdem nicht hin. Die curl abfrage im Mac-Terminal klappt wunderbar. Bekomm auch die entsprechende Antwort, aber ich bekomm es einfach nicht in das Ninox-Script übersetzt.
-
Ich hab mittlerweile rausgefunden, warum es nicht funktioniert.
Man muss den API-Token encoden und zwar inkl. dem Zusatz ":api_token"aus
1971800d4d82861d8f2c1651fea4d212:api_token
wird
MTk3MTgwMGQ0ZDgyODYxZDhmMmMxNjUxZmVhNGQyMTI6YXBpX3Rva2Vu
Natürlich entsprechend dem eigenen API-Token. (gibts auch in der Free-Version)
Der Code sieht dann wie folgt aus:
let myMethod := "POST"; let myURL := "https://api.track.toggl.com/api/v8/time_entries"; let myHeaders := { Authorization: "Basic MTk3MTgwMGQ0ZDgyODYxZDhmMmMxNjUxZmVhNGQyMTI6YXBpX3Rva2Vu", 'Content-Type': "application/json" }; let myBody := { time_entry: { pid: 12345, wid: 12345, start: format(now(), ""), duration: 1200, description: "Aufgabenbeschreibung", created_with: "Ninox API Test" } }; Result := do as server formatJSON(http(myMethod, myURL, myHeaders, myBody)) end
PID = Projekt-ID und WID=Workspace-ID (eins der beiden wird benötigt).
-------
Um an die ganzen IDs zu kommen gibt es die cURL-Abfrage:
curl -v -u 1971800d4d82861d8f2c1651fea4d212:api_token -X GET https://api.track.toggl.com/api/v8/me
nach obenstehendes Logik hab ich das in Ninox-Script umgewandelt:
let myURL := "https://api.track.toggl.com/api/v8/me";; let myHeaders := { Authorization: "Basic MTk3MTgwMGQ0ZDgyODYxZDhmMmMxNjUxZmVhNGQyMTI6YXBpX3Rva2Vu", 'Content-Type': "application/json" }; let myBody := {}; Result := do as server formatJSON(http("GET", myURL, myHeaders, myBody)) end
Das funktioniert jetzt aber leider nicht (wäre ja auch zu einfach gewesen)...
Die Antwort ist:
{"result":"\n<html><head>\n<meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\">\n<title>400 Bad Request</title>\n</head>\n<body text=#000000 bgcolor=#ffffff>\n<h1>Error: Bad Request</h1>\n<h2>Your client has issued a malformed or illegal request.</h2>\n<h2></h2>\n</body></html>
Und...was auch komisch ist:
Das ganze funktioniert nur in der Cloud. Wenn ich die Datenbank lokal nutzen möchte, dann kommt generell:
{"error":"Request has failed: error - "}
Also falls jemand was sieht, was ich nicht sehe, oder Ideen hat, Hilfe ist gerne willkommen. Der Support von Toggl hat leider wenig Infos.
PS: Andere API-Abfragen gehen auch mit der offline Version. Mit was könnte das zusammen hängen?
-
Ich denke es wird nicht direkt aus Ninox heraus funktionieren.
Mit den von dir gezeigten Daten wird mit dem http-Request eine Authorisierungsanfrage an 'Toggle Track' gesendet. Diese gibt einen Session-Key (als Cookie) zurück, mit dem dann der eigentliche POST-Request ausgelöst werden soll. Das kann Ninox nicht.Du wird wohl nicht um ein Drittprogramm wie Make oder n8n für deine Http-Request Anfragen herum kommen. Jedenfalls habe ich es so in der Dokumentation verstanden.
Content aside
- Status Answered
- vor 2 JahrenZuletzt aktiv
- 4Antworten
- 97Ansichten
-
2
Folge bereits