NEWS
ical - Erinnerungszeit auslesen [gelöst]
-
das "Entschachteln" funktioniert nur zum Teil.
-
Liste_object lässt sich noch erstellen, Liste_ID nicht mehr, ergibt []
-
die ID ändert sich mit jedem Termin, ist also nicht konstant
Der Ansatz war aber gut, vielleicht fehlt nur noch ein kleiner Trick
Danke
-
-
glaube nicht, dass da nur etwas kleines fehlt - wenn die langen id's wirklich unterschiedlich sein können, müßte man zuerst alle unterpunkte auslesen - danach müssen wiederum alle diese gefundenen unterpunkte durchsucht werden, ob sie bestimmte unterpunkte habe (z.b. "method": "PUBLISH" ) damit man weiß, das es sich um das richtige handelt - dann erst könnte man das auslesen
natürlich ist es nicht ganz so einfach, denn wenn man 2 reminder hat (mail,benachrichtigung) hat man das ganze 2 mal
das ganze kann man eher mit javascript lösen d.h. du musst einen functionblock machen, der das ganze macht
benötigte befehle:
- Object.keys(jsondata);
- hasOwnProperty()
-
kann ich denn nicht die ganze Zeichenfolge des Array in einen Text umwandeln und dann konventionel mit String-Befehlen ran gehen?
9:24:31.759 info javascript.0 (1640) script.js.Tesla.Skript_1: [{'date':'09.11.2022 10:00-11:00','event':'Test','_class':'ical_Jochen Ruth ical_tomorrow','_date':'2022-11-09T09:00:00.000Z','_end':'2022-11-09T10:00:00.000Z','_IDID':'cor32dhmcpj3ab9j6gsj8b9kckqj4b9o64r66bb46oo3ac1i6sqm2o9p70@google.com','_allDay':false,'_private':false,'_rule':' ','location':'','_calName':'Jochen Ruth','_calColor':'#44ff00','_object':{'type':'VEVENT','params':[],'start':'2022-11-09T09:00:00.000Z','datetype':'date-time','end':'2022-11-09T10:00:00.000Z','dtstamp':'2022-11-08T18:24:06.000Z','uid':'cor32dhmcpj3ab9j6gsj8b9kckqj4b9o64r66bb46oo3ac1i6sqm2o9p70@google.com','created':'2022-11-08T17:05:18.000Z','lastmodified':'2022-11-08T17:05:18.000Z','location':'','sequence':'0','status':'CONFIRMED','summary':'Test','transparency':'OPAQUE','e7d276d9-6f79-4cc3-af0d-3a37126344b7':{'type':'VALARM','params':[],'action':'DISPLAY','description':'This is an event reminder','trigger':'-P0DT0H10M0S','end':'2022-11-09T18:24:07.531Z'},'method':'PUBLISH'}}]
und danach sowas
dann könnte man doch alles mit String-Befehlen lösen.
-
@jr28 sagte in ical - Erinnerungszeit auslesen:
[{'date':'09.11.2022 10:00-11:00','event':'Test','_class':'ical_Jochen Ruth ical_tomorrow','_date':'2022-11-09T09:00:00.000Z','_end':'2022-11-09T10:00:00.000Z','_IDID':'cor32dhmcpj3ab9j6gsj8b9kckqj4b9o64r66bb46oo3ac1i6sqm2o9p70@google.com','_allDay':false,'_private':false,'_rule':' ','location':'','_calName':'Jochen Ruth','_calColor':'#44ff00','_object':{'type':'VEVENT','params':[],'start':'2022-11-09T09:00:00.000Z','datetype':'date-time','end':'2022-11-09T10:00:00.000Z','dtstamp':'2022-11-08T18:24:06.000Z','uid':'cor32dhmcpj3ab9j6gsj8b9kckqj4b9o64r66bb46oo3ac1i6sqm2o9p70@google.com','created':'2022-11-08T17:05:18.000Z','lastmodified':'2022-11-08T17:05:18.000Z','location':'','sequence':'0','status':'CONFIRMED','summary':'Test','transparency':'OPAQUE','e7d276d9-6f79-4cc3-af0d-3a37126344b7':{'type':'VALARM','params':[],'action':'DISPLAY','description':'This is an event reminder','trigger':'-P0DT0H10M0S','end':'2022-11-09T18:24:07.531Z'},'method':'PUBLISH'}}]
müßte evtl auch funktionieren - was genau willst du auslesen - diesen wert? 'end': '2022-11-09T18:24:07.531Z'
dann müßtest du unter _object das 2te aufkommen von end finden - dann könntest du es evtl. finden
-
ich brauche den Startwert und die Erinnerung
'_date':'2022-11-09T09:00:00.000Z'
'trigger':'-P0DT0H10M0S'leider bringt der Versuch den reinen Text einer Variable zuzuweisen eine leere Variable
-
sorry - aber das mit dem string durchsuchen gefällt mir nicht
hier ein beispiel - die funktion gibt immer den ersten trigger zurück (oder no triggers",wenn keiner da ist) - davon ausgehend, das deine einträge nur eine erinnerung haben ! kommt bei mir selten vor - habe meist 2 trigger (mail, benachrichtigung)
zum import und testen:
-
@liv-in-sky
vielen herzlichen Dank für die Mühe.
Ich versuche noch genau zu verstehen wie es gemacht wurde, aber es tut was es soll und ich kann es als Baustein verwenden. -
zuerst wird das _object gelesen
in der function:
let theTriggers=[]; let theKeys=Object.keys(objectPart); //liest alle unterkeys unter _object und erstellt ein array //log(theKeys); for (let ii=0; ii<theKeys.length; ii++){ // es wird durch alle unterkeys durchgegangen if (objectPart[theKeys[ii]].hasOwnProperty("trigger")) { //wenn in einem unterkey noch ein unter-unterkey "trigger" existiert theTriggers.push(objectPart[theKeys[ii]].trigger) // wird dieser trigger in ein array gespeichert (könnten ja mehrere sein } }
if (theTriggers.length > 0) { return theTriggers[0] } else { return"no Triggers";} // gibt den ersten "trigger-wert" aus dem array zurück oder "no Trigger"
wichtig dabei - ein tool. um die struktur des jsons richtig zu sehen
[ { 'date': '09.11.2022 10:00-11:00', 'event': 'Test', '_class': 'ical_Jochen Ruth ical_tomorrow', '_date': '2022-11-09T09:00:00.000Z', '_end': '2022-11-09T10:00:00.000Z', '_IDID': 'cor32dhmcpj3ab9j6gsj8b9kckqj4b9o64r66bb46oo3ac1i6sqm2o9p70@google.com', '_allDay': false, '_private': false, '_rule': ' ', 'location': '', '_calName': 'Jochen Ruth', '_calColor': '#44ff00', '_object': { 'type': 'VEVENT', 'params': [ ], 'start': '2022-11-09T09:00:00.000Z', 'datetype': 'date-time', 'end': '2022-11-09T10:00:00.000Z', 'dtstamp': '2022-11-08T18:24:06.000Z', 'uid': 'cor32dhmcpj3ab9j6gsj8b9kckqj4b9o64r66bb46oo3ac1i6sqm2o9p70@google.com', 'created': '2022-11-08T17:05:18.000Z', 'lastmodified': '2022-11-08T17:05:18.000Z', 'location': '', 'sequence': '0', 'status': 'CONFIRMED', 'summary': 'Test', 'transparency': 'OPAQUE', 'e7d276d9-6f79-4cc3-af0d-3a37126344b7': { 'type': 'VALARM', 'params': [ ], 'action': 'DISPLAY', 'description': 'This is an event reminder', 'trigger': '-P0DT0H10M0S', 'end': '2022-11-09T18:24:07.531Z' }, 'method': 'PUBLISH' } } ]
-
Vielen Dank nochmal, werde ich mir in Ruhe anschauen. Ich beschäftige mich erst seit etwa 10 Tagen mit JavaScript bzw. Blockly, da ich durch einen Bekannten auf IO Broker gestoßen wurde und festgestellt habe, was damit alles geht.
-
ja - das ist nicht unbedingt ein anfäger script - aber json-verarbeiten kann man bei iobroker immer gut gebrauchen - leider ist blockly da nicht wirklich gut dafür
nur so nebenbei - bei diesem script ist etwas besonderes
normalerweise spricht man einen key im json so an - also mit punkten getrennt:
objectPart.theKeys[ii].trigger -> objectPart.e7d276d9-6f79-4cc3-af0d-3a37126344b7.trigger
da aber der key "e7d276d9-6f79-4cc3-af0d-3a37126344b7" bindestriche beinhaltet und javascript das als minus interpretiert, muss man anstatt des punktes die eckige klammer nehmen
objectPart[theKeys[ii]].trigger -> objectPart["e7d276d9-6f79-4cc3-af0d-3a37126344b7"].trigger
-
noch eine Nachfrage:
weiß jemand, warum bei manchen Kalendern im ical-Format die Abteilung VALARM fehlt.
Ich habe sie nur in meinem eigenen Kalender, in allen anderen (eigenen und freigegebenen) Kalendern fehlt die Alarmzeit