Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    2.8k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    4.8k

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    4.1k

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

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
7 Beiträge 3 Kommentatoren 349 Aufrufe 3 Beobachtet
  • Ä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
    Most Active
    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 ...
    Ich schreibe den Code nicht mehr selbst – ich schimpfe mit der KI, bis er funktioniert.

    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 Online
      F Online
      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 Windows (WSL2)

      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
        Most Active
        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 ...
        Ich schreibe den Code nicht mehr selbst – ich schimpfe mit der KI, bis er funktioniert.

        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 Online
          F Online
          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 Windows (WSL2)

          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

            Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

            Public Transport
            https://github.com/tt-tom17/ioBroker.public-transport
            https://github.com/tt-tom17/ioBroker.public-transport/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 Online
              F Online
              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 Windows (WSL2)

              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
                Most Active
                schrieb am zuletzt editiert von
                #7

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

                mal auf die Schnelle

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

                Recht herzlichen Dank!

                Proxmox und HA ...
                Ich schreibe den Code nicht mehr selbst – ich schimpfe mit der KI, bis er funktioniert.

                1 Antwort Letzte Antwort
                0

                Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                Registrieren Anmelden
                Antworten
                • In einem neuen Thema antworten
                Anmelden zum Antworten
                • Älteste zuerst
                • Neuste zuerst
                • Meiste Stimmen


                Support us

                ioBroker
                Community Adapters
                Donate

                369

                Online

                33.0k

                Benutzer

                83.4k

                Themen

                1.3m

                Beiträge
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2026
                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