Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst] Terminskript; Was läuft falsch

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

[gelöst] Terminskript; Was läuft falsch

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
7 Beiträge 3 Kommentatoren 290 Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Meister MopperM Online
    Meister MopperM Online
    Meister Mopper
    schrieb am zuletzt editiert von Meister Mopper
    #1

    Ich habe ein Skript, mit welchem ich zu einem bestimmten Zeitpunkt aus einem Google-Kalender die Termine von heute und Morgen auslesen und diese an Telegram senden möchte.

    Das Skript habe ich natürlich aus dem Forum übernommen, kann aber kein Javaskript.

    Egal was ich an Tagen (let AnzTage) definiere, es werden mit heute immer 21 Tage ausgeworfen.

        let arr = getState('ical.1.data.table').val;
        let vUser = "Thomas";
        let AnzTage = 1;    // wie viele Tage sollen ausgelesen werden
        let 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
        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 = "<pre>📅 anstehende Termine:\n" + vText + "</pre>";
        log (vText);
        sendTo('telegram', { user: vUser, text: vText, parse_mode: 'HTML' });
    
    

    Ich bin mir sicher, dass hier jemand sofort den Fehler sieht.

    Proxmox und HA

    F T 2 Antworten Letzte Antwort
    0
    • Meister MopperM Meister Mopper

      Ich habe ein Skript, mit welchem ich zu einem bestimmten Zeitpunkt aus einem Google-Kalender die Termine von heute und Morgen auslesen und diese an Telegram senden möchte.

      Das Skript habe ich natürlich aus dem Forum übernommen, kann aber kein Javaskript.

      Egal was ich an Tagen (let AnzTage) definiere, es werden mit heute immer 21 Tage ausgeworfen.

          let arr = getState('ical.1.data.table').val;
          let vUser = "Thomas";
          let AnzTage = 1;    // wie viele Tage sollen ausgelesen werden
          let 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
          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 = "<pre>📅 anstehende Termine:\n" + vText + "</pre>";
          log (vText);
          sendTo('telegram', { user: vUser, text: vText, parse_mode: 'HTML' });
      
      

      Ich bin mir sicher, dass hier jemand sofort den Fehler sieht.

      F Offline
      F Offline
      fastfoot
      schrieb am zuletzt editiert von
      #2

      @meister-mopper sofort wäre übertrieben. Das Skript liest das Datum und setzt dann das Jahr von Heute, wobei aus dem Termin für Morgen dann der 1.1.20**22** wird. Die anschliessende Subtraktion der Daten ist negativ und somit immer kleiner als die Anzahl deiner Tage. Sollte ab morgen erledigt sein :-)

      iobroker läuft unter Docker auf QNAP TS-451+
      SkriptRecovery: https://forum.iobroker.net/post/930558

      Meister MopperM 1 Antwort Letzte Antwort
      0
      • F fastfoot

        @meister-mopper sofort wäre übertrieben. Das Skript liest das Datum und setzt dann das Jahr von Heute, wobei aus dem Termin für Morgen dann der 1.1.20**22** wird. Die anschliessende Subtraktion der Daten ist negativ und somit immer kleiner als die Anzahl deiner Tage. Sollte ab morgen erledigt sein :-)

        Meister MopperM Online
        Meister MopperM Online
        Meister Mopper
        schrieb am zuletzt editiert von
        #3

        @fastfoot
        Das leuchtet ein. Was muss ich jedoch tun, wenn das immer richtig angezeigt werden soll?

        Proxmox und HA

        F 2 Antworten Letzte Antwort
        0
        • Meister MopperM Meister Mopper

          @fastfoot
          Das leuchtet ein. Was muss ich jedoch tun, wenn das immer richtig angezeigt werden soll?

          F Offline
          F Offline
          fastfoot
          schrieb am zuletzt editiert von
          #4

          @meister-mopper sagte in Terminskript; Was läuft falsch:

          Das leuchtet ein. Was muss ich jedoch tun, wenn das immer richtig angezeigt werden soll?

          ab morgen ist's ja richtig :-) Ansonsten warten bis jd. den Quark verbessert. Habe gerade wenig Zeit, sorry

          iobroker läuft unter Docker auf QNAP TS-451+
          SkriptRecovery: https://forum.iobroker.net/post/930558

          1 Antwort Letzte Antwort
          0
          • Meister MopperM Meister Mopper

            Ich habe ein Skript, mit welchem ich zu einem bestimmten Zeitpunkt aus einem Google-Kalender die Termine von heute und Morgen auslesen und diese an Telegram senden möchte.

            Das Skript habe ich natürlich aus dem Forum übernommen, kann aber kein Javaskript.

            Egal was ich an Tagen (let AnzTage) definiere, es werden mit heute immer 21 Tage ausgeworfen.

                let arr = getState('ical.1.data.table').val;
                let vUser = "Thomas";
                let AnzTage = 1;    // wie viele Tage sollen ausgelesen werden
                let 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
                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 = "<pre>📅 anstehende Termine:\n" + vText + "</pre>";
                log (vText);
                sendTo('telegram', { user: vUser, text: vText, parse_mode: 'HTML' });
            
            

            Ich bin mir sicher, dass hier jemand sofort den Fehler sieht.

            T Offline
            T Offline
            TT-Tom
            schrieb am zuletzt editiert von
            #5

            @meister-mopper
            du könntest auch eine weitere Instanz von iCal anlegen und dort 2 Tage für die Zukunft einstellen. Damit liefert ical auch nur die nächsten zwei Tage.

            Gruß Tom
            https://github.com/tt-tom17
            Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

            NSPanel Script Wiki
            https://github.com/joBr99/nspanel-lovelace-ui/wiki

            NSPanel Adapter Wiki
            https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

            1 Antwort Letzte Antwort
            0
            • Meister MopperM Meister Mopper

              @fastfoot
              Das leuchtet ein. Was muss ich jedoch tun, wenn das immer richtig angezeigt werden soll?

              F Offline
              F Offline
              fastfoot
              schrieb am zuletzt editiert von
              #6

              @meister-mopper mal auf die Schnelle

              /**
               * Name:			Send iCal
               * Zweck:			Termine aus iCal senden
               * Datum:			31.12.2022
               * Autor:			unbekannt, @fastfoot
               * Forum:			https://forum.iobroker.net/post/919318
               */
              const AnzTage = 10;
              const vUser = 'Thomas';
              const datumText = ['Heute ', 'Morgen', ''];
              const termine = getState('ical.1.data.table').val;
              let heute = new Date();
              heute.setHours(0, 0, 0, 0);
              let msg = '';
              
              termine.forEach(erstelleNachricht);
              
              msg = "<pre>📅 anstehende Termine:\n" + msg + "</pre>";
              sendTo('telegram', { user: vUser, text: msg, parse_mode: 'HTML' });
              
              function erstelleNachricht(termin, i) {
                  let terminText = '';
                  let eventTag = new Date(termin._date);
                  eventTag.setHours(0, 0, 0, 0);
                  const eventZeiten = termin.date.split(' ');
                  datumText[2] = eventZeiten[0];
                  const diffTage = Math.floor((eventTag.getTime() - heute.getTime()) / 86400000);
              
                  if (diffTage <= AnzTage) {
                      // mit Uhrzeit
                      // terminText = event._allDay ? datumText[Math.min(diffTage, 2)] : datumText[Math.min(diffTage, 2)] +' '+ evtTimes[1].substring(0,5);
              
                      // Heute und Morgen als Text
                      terminText = datumText[Math.min(diffTage, 2)];
              
                      // Alternativ nur das Datum 01.01.
                      // terminText = eventZeiten[0];
              
                      msg += terminText + ' ' + termin.event + '\n';
                  }
              }
              
              

              iobroker läuft unter Docker auf QNAP TS-451+
              SkriptRecovery: https://forum.iobroker.net/post/930558

              Meister MopperM 1 Antwort Letzte Antwort
              1
              • F fastfoot

                @meister-mopper mal auf die Schnelle

                /**
                 * Name:			Send iCal
                 * Zweck:			Termine aus iCal senden
                 * Datum:			31.12.2022
                 * Autor:			unbekannt, @fastfoot
                 * Forum:			https://forum.iobroker.net/post/919318
                 */
                const AnzTage = 10;
                const vUser = 'Thomas';
                const datumText = ['Heute ', 'Morgen', ''];
                const termine = getState('ical.1.data.table').val;
                let heute = new Date();
                heute.setHours(0, 0, 0, 0);
                let msg = '';
                
                termine.forEach(erstelleNachricht);
                
                msg = "<pre>📅 anstehende Termine:\n" + msg + "</pre>";
                sendTo('telegram', { user: vUser, text: msg, parse_mode: 'HTML' });
                
                function erstelleNachricht(termin, i) {
                    let terminText = '';
                    let eventTag = new Date(termin._date);
                    eventTag.setHours(0, 0, 0, 0);
                    const eventZeiten = termin.date.split(' ');
                    datumText[2] = eventZeiten[0];
                    const diffTage = Math.floor((eventTag.getTime() - heute.getTime()) / 86400000);
                
                    if (diffTage <= AnzTage) {
                        // mit Uhrzeit
                        // terminText = event._allDay ? datumText[Math.min(diffTage, 2)] : datumText[Math.min(diffTage, 2)] +' '+ evtTimes[1].substring(0,5);
                
                        // Heute und Morgen als Text
                        terminText = datumText[Math.min(diffTage, 2)];
                
                        // Alternativ nur das Datum 01.01.
                        // terminText = eventZeiten[0];
                
                        msg += terminText + ' ' + termin.event + '\n';
                    }
                }
                
                

                Meister MopperM Online
                Meister MopperM Online
                Meister Mopper
                schrieb am zuletzt editiert von
                #7

                @fastfoot sagte in Terminskript; Was läuft falsch:

                mal auf die Schnelle

                :clap: Für "auf die Schnelle" läuft das aber super gut.

                Recht herzlichen Dank!

                Proxmox und HA

                1 Antwort Letzte Antwort
                0
                Antworten
                • In einem neuen Thema antworten
                Anmelden zum Antworten
                • Älteste zuerst
                • Neuste zuerst
                • Meiste Stimmen


                Support us

                ioBroker
                Community Adapters
                Donate

                682

                Online

                32.6k

                Benutzer

                82.3k

                Themen

                1.3m

                Beiträge
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Anmelden

                • Du hast noch kein Konto? Registrieren

                • Anmelden oder registrieren, um zu suchen
                • Erster Beitrag
                  Letzter Beitrag
                0
                • Home
                • Aktuell
                • Tags
                • Ungelesen 0
                • Kategorien
                • Unreplied
                • Beliebt
                • GitHub
                • Docu
                • Hilfe