NEWS
Ical Termine als Telegramnachricht
-
So,
hab mal ein bisschen rum gespielt.var arr = getState('ical.0.data.table').val; for (x=1;x<=5;x++) { log (arr[x].date + " / " + arr[x].event); }
du musst die table Var. nehmen.
Dann arr erzeugen.Im log kommt dann:
Was du noch brauchst:
- Prüfen von Datum
- telegram senden.
mfg
Dieter -
<xml xmlns="http://www.w3.org/1999/xhtml"> <block type="telegram" id="~U[Ttfz9[[RJFe$HzE@Y" x="-587" y="2062"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">HTML</field> <value name="MESSAGE"> <shadow type="text" id="Gzz$1-!y]:uJcJ4tA)4O"> <field name="TEXT">text</field> </shadow> <block type="text_join" id="feiXZ+N4Ic*_*T6/]gr|"> <mutation items="2"></mutation> <value name="ADD0"> <block type="get_value" id="{;wI`jk@W1*YZI%lE(+`"> <field name="ATTR">val</field> <field name="OID">ical.0.data.html</field> </block> </value> </block> </value> <value name="USERNAME"> <block type="text" id="93]*F0;~EH8%Yow+8a%`"> <field name="TEXT">Nico</field> </block> </value> </block> </xml>
Hier ist das Blockly Script.
-
@bahnuhr wo muss ich das hin kopieren? Sorry aber ich bin noch beim urschleim
-
@Nico-Adler sagte in Ical Termine als Telegramnachricht:
@bahnuhr wo muss ich das hin kopieren? Sorry aber ich bin noch beim urschleim
Das ist ein Script und muss bei Scripte als Javascript (nicht blockly) eingefügt und dann gestartet werden.
-
habe ich gemacht. im log stehen jetzt auch die Termine. wie füge ich das jetzt in das blockly.
wenn ich das objekt vom javascript nehme, kommt nur der text true. -
@Nico-Adler sagte in Ical Termine als Telegramnachricht:
habe ich gemacht. im log stehen jetzt auch die Termine. wie füge ich das jetzt in das blockly.
wenn ich das objekt vom javascript nehme, kommt nur der text true.tut mir leid, blockly mach ich nicht.
Muss jemand anders mal helfen.
-
OK. Ich danke dir trotzdem für deine Mühe
-
@bahnuhr ich habe mir jetzt ein datenpunkt angelegt.
und dein script mit hilfe von google etwas geändert.
im Datenpunkt steht jetzt schon mal Klartext, aber ich glaube er macht nur den letzen eintrag da rein. wie kann ich das lösen?hier das skript:
var arr = getState('ical.0.data.table').val; for (x=1;x<=5;x++) { setState("ical.0.Termin", arr[x].date + " / " + arr[x].event); }
-
Keiner eine Idee?
-
@Nico-Adler sagte in Ical Termine als Telegramnachricht:
Keiner eine Idee?
Na, weil du den Wert 5 x zuweist.
Also erst 1 in die Var.
dann 2 in die Var.
....Und zum Schluss steht halt die 5 drin.
-
Und wie kann ich das ändern? Also im Log bei deinem Skript kommen ja die nächsten 5 Termine einzeln aufgelistet. Kann ich die in einen Datenpunkt fortlaufend übertragen?
-
@Nico-Adler sagte in Ical Termine als Telegramnachricht:
Und wie kann ich das ändern? Also im Log bei deinem Skript kommen ja die nächsten 5 Termine einzeln aufgelistet. Kann ich die in einen Datenpunkt fortlaufend übertragen?
z.B. so:
// Variablen var arr = getState('ical.0.data.table').val; var vUser = "Dieter"; var vText = ""; // Script for (x=1;x<=5;x++) { log (arr[x].date + " / " + arr[x].event); vText += (arr[x].date + " / " + arr[x].event +"\n"); } // telegram senden vText = "Die nächsten Termine:\n" + vText; log (vText); sendTo('telegram', { user: vUser, text: vText, parse_mode: 'HTML' });
Hättest du aber auch selber drauf kommen können, oder ?
-
Vielen Dank das funktioniert.
Ich wäre nicht selber drauf gekommen, weil ich leider davon keine Ahnung habe. -
So, habe jetzt auch die Tage eingebaut.
Probleme gibt es beim Jahreswechsel. Damit konnte ich aber nun erst einmal leben.// Variablen var arr = getState('ical.0.data.table').val; var vUser = "Dieter"; var AnzTage = 7; // wie viele Tage sollen ausgelesen werden var vText = ""; //aktuelles Datum aktJahr = new Date().getFullYear(); aktMon = new Date().getMonth()+1; aktTag = new Date().getDate(); d3 = getDateObject(aktJahr+"-"+aktMon+"-"+aktTag+" 02:00:00"); // Datum aus ical var arr = getState('ical.0.data.table').val; arr.forEach(myFunction); function myFunction(item, i) { // date aus Array ermitteln aMon = (arr[i].date).substring(3, 5); aTag = (arr[i].date).substring(0, 2); d2 = getDateObject(aktJahr+"-"+aMon+"-"+aTag); // Tage ermitteln var t = Date.parse(d2) - Date.parse(d3); var days = Math.floor( t/(1000*60*60*24) ); // wenn kleiner x Tage dann dazu fügen if (days <= AnzTage) { log (aTag + "." + aMon + "." + " " + arr[i].event +"\n"); vText += (aTag + "." + aMon + "." + " " + arr[i].event +"\n"); } } // telegram senden vText = "Die nächsten Termine:\n" + vText; log (vText); sendTo('telegram', { user: vUser, text: vText, parse_mode: 'HTML' });
mfg
Dieter -
@bahnuhr
mit diesen Script werden die Termine nicht gesendet -
@locito09 sagte in Ical Termine als Telegramnachricht:
@bahnuhr
mit diesen Script werden die Termine nicht gesendetDann hast du etwas falsch gemacht.
Das Script klappt einwandfrei.
-
@bahnuhr
was soll ich den falsch machen, Script habe ich hinzugefügt und nichts geändert da meine Instanz auch 0 ist.
Der erste Script läuft super, nur beim 2. geht's es nicht.Muss vielleicht beim Ical Adapter was eingestellt werden?
-
@locito09 sagte in Ical Termine als Telegramnachricht:
@bahnuhr
was soll ich den falsch machen, Script habe ich hinzugefügt und nichts geändert da meine Instanz auch 0 ist.
Der erste Script läuft super, nur beim 2. geht's es nicht.Muss vielleicht beim Ical Adapter was eingestellt werden?
heißt du auch:
var vUser = "Dieter";
Ansonsten muss natürlich der Name rein, an wen es gesendet werden soll.
Und dieser Name muss natürlich auch in telegram eingetragen sein. -
@bahnuhr
Den Namen habe ich komplett weggelassen,(beim ersten Script habe ich es auch so gemacht) ich bekomme auch eine Telegram Nachricht , aber nur mit dem Inhalt "Die nächsten Termine" danach ist leer -
@locito09 sagte in Ical Termine als Telegramnachricht:
@bahnuhr
Den Namen habe ich komplett weggelassen,(beim ersten Script habe ich es auch so gemacht) ich bekomme auch eine Telegram Nachricht , aber nur mit dem Inhalt "Die nächsten Termine" danach ist leerWenn du den Namen komplett weg lässt an wen soll er hier:
sendTo('telegram', { user: vUser, text: vText, parse_mode: 'HTML' });etwas versenden ???