Kalendereintrag und Texte mit Tasker verarbeiten

android-micha

android-micha

Erfahrenes Mitglied
40
Hallo,
für ein Projekt "Geburtstagsglückwünsche" will ich einen Kalender auslesen, der nur Einträge der Form "Max Mustermann (1982)" hat.
Jetzt möchte ich das auslesen und Glückwunsch-E-Mails vorbereiten, die ich dann manuell ändere und abschicke. Meine bisherigen Probleme dabei:
1. Der Kalendereintrag ist kein Event, das nur einmal zündet, sondern ein Zustand.
2. Es gibt Tage, an denen mehr als eine Person Geburtstag hat, dafür möchte ich jeweils eine Mail haben.
3. Aus dem Text des Kalendereintrags möchte ich eine E-Mail-Adresse basteln: mmustermann@meinedomain.de. Außerdem wäre es cool, wenn Tasker mir das Alter berechnen würde. Wo finde ich (hoffentlich vorhandene) Funktionen zur Stringbearbeitung?

Ich habe hier auch schon fertige Tasks für ähnliche Aufgaben gefunden, aber mit ganz anderen Voraussetzungen (z.B. Auslesen der Kontakte), so dass mir das leider nicht hilft.

Danke für Unterstützung!
Micha
 
Ich habe mittlerweile weiter recherchiert und bin hier fündig geworden: Pocketabels. Damit ist Teil 3 meiner Fragen erledigt.
Aber Teil 1 und 2 ist weiter offen: wie kriege ich es hin, dass ein Task nur einmal ausgeführt wird, wenn es um einen ganztägigen Kalendereintrag geht? Und wie kann ich alle Kalendereinträge des Tages nacheinander abarbeiten?
Danke
Micha
 
Ist ein Task mit entsprechenden Einträgen nicht einfacher?
Mein Geburtstags-Task enthält für jede Person Datum ohne Jahreszahl, Name, E-Mail-Adresse, Anrede und wird 1x am Tag gestartet. Bei Zutreffen des Datums wird eine E-Mail generiert, die dann noch nicht abgesandt wird.
 

Anhänge

  • E_Mails_Geburtstage_generieren.tsk.xml.zip
    1,7 KB · Aufrufe: 39
Danke für die Idee, aber das ist hier zu kompliziert. Es geht um Glückwünsche im Kollegium. Wir sind ca. 140 Leute, der Google-Kalender existiert sowieso schon und die Daten sollen keinesfalls doppelt geführt werden. Dazu ändert sich zu oft etwas in der Zusammensetzung des Kollegiums.

Wenn nur einer am Tag Geburtstag hat, funktioniert auch schon alles wie gewünscht (außer dass das Profil den ganzen Tag aktiv ist, aber das kriege ich sicher auch noch geregelt).
Ich frage %CALTITLE ab, bei mehreren Einträgen müsste ich zum jeweils nächsten springen, nachdem die Mail verfasst ist. Nun habe ich schon irgendwo gelesen, dass dem Tasker ein Befehl wie "nächster Termin" fehlt, es kann aber sein, dass das anders gemeint war (nämlich als der zeitlich folgende Termin, ich will ja den zweiten und dritten aktuell gültigen Termin abfangen).

Danke für weitere Unterstützung,
Micha
 
@android-micha Hallo, du kannst vielleicht dieses Plugin verwenden:
CalendarTask - Apps on Google Play

Einmal am Tag holst dir damit über "Get Events" die Liste aller Termine im von dir festgelegten Zeitraum (z.B. innerhalb eines Tages) des gewünschten Kalenders in eine Variable.

Da du den Zeitraum nicht täglich neu eingeben willst, solltest du mit Variablen arbeiten.
 
Zuletzt bearbeitet:
Danke für die Idee mit dem Plugin. Das hatte ich sogar schon installiert und war gestern unabhängig von deinem Tipp endlich auf die Idee gekommen, es auszuprobieren.
Es gibt einen Youtubechannel baldapps, dort ist ein Tutorial zur Verwendung. Den dort vorgestellten Task habe ich auch schon nachgebaut. Jetzt muss ich nur noch alles verknüpfen und einen passenden Kontext wählen. Wenn alles klappt, kann ich es ja hier veröffentlichen.

Noch eine Frage zum Thema Stringversrbeitung. Ich würde gerne einer Variablen den leeren String zuweisen,
Code:
alter = ""
hieße das in Python. Wie geht das hier, wo es keine Anführungszeichen, auch nicht bei Zeichenketten, zur Begrenzung gibt?

Danke,
Micha
 
Noch ein Problem:
Zwar kann ich durch die Kalendereinträge switchen, aber es funktioniert nicht, zweimal "Mail verfassen" hintereinander aufzurufen, siehe Beispieltask.
Code:
    Mehrere Mails (48)
        A1: Variable Setzen [ Name:%counter Zu:0 Recurse Variables:Aus Mathematisch:An Hinzufügen:Aus Max Rounding Digits:3 Structure Output (JSON, etc):An ]
        A2: Array Set [ Variable Array:%adressen Values:mail1@domain.invalid,mail2@domain.invalid Teiler:, ]
        A3: Variable Addiere [ Name:%counter Wert:1 Obergrenze:0 ]
        A4: Stopp [ (Fehler):Aus Task: ] If [ %counter > %adressen(#) ]
        A5: Benachrichtigung [ Titel:Test %counter Text:%adressen(%counter) Icon:null Nummer:0 Dauerhaft:Aus Priorität:3 Repeat Alert:Aus LED Colour:Rot LED Rate:0 Sound Datei: Vibration Pattern: Category: ]
        A6: Verfasse Email [ Empfänger:%adressen(%counter) Betreff:Hallo Nachricht:Testnachricht ]
        A7: Goto Aktion [ Typ:Aktion Nummer Nummer:3 Bezeichnung: ]
Hat jemand eine Lösungsidee?

Micha
 

Anhänge

  • mehrere Mails Task.zip
    626 Bytes · Aufrufe: 22
Schau dir mal meinen Task an.
Ich denke du brauchst eine FOR-schleife


https://taskernet.com/shares/?user=AS35m8nxyjkLf45z4YT2gnhIJgQVCMLCpcA9XwdWxEle8AZNVOghjglnx11%2BGDDaPDxBXDZO&id=Task%3AGeburtstagabfrage

A1 - A4 = Tagesabfrage mit dem Plugin CalendarTask
A5 /A8 = Zwischen A5 / A8 gehört alles Was mit Emailadresse erstellen, Alter ausrechnen und email senden zutuen hat.

Code:
    Geburtstagabfrage (80)
        A1: Get time in seconds [ Konfiguration:Today Timeout (Sekunden):10 Structure Output (JSON, etc):Aus ]
        A2: Variable Setzen [ Name:%birthday_start Zu:%cttime+1 Recurse Variables:Aus Mathematisch:An Hinzufügen:Aus Max Rounding Digits:3 Structure Output (JSON, etc):Aus ]
        A3: Variable Setzen [ Name:%birthday_ende Zu:%birthday_start+86398 Recurse Variables:Aus Mathematisch:An Hinzufügen:Aus Max Rounding Digits:3 Structure Output (JSON, etc):Aus ]
        <Kalenderquelle auswählen>
        A4: Get events [ Konfiguration:My calendar from %birthday_start to %birthday_ende Timeout (Sekunden):30 Structure Output (JSON, etc):Aus ]
        A5: For [ Variable:%geburtstage Einträge:%cttitles() Structure Output (JSON, etc):Aus ]
        <Testaktion.  kann durch Email senden ersetzt werden>
        A6: Popup-Benachrichtigung [ Text:%geburtstage Lang:Aus ]
        <Testaktion: kann gelöscht werden>
        A7: Warte [ MS:0 Sekunden:5 Minuten:0 Std.:0 Tage:0 ]
        A8: End For
 
Zuletzt bearbeitet:
Das Problem ist nicht mehr die Schleife, sondern die Aktion in der Schleife. Eine Benachrichtigung klappt mittlerweile auch bei mehreren Geburtstagen. Aber E-Mail verfassen eben nicht. Evtl. müsste ich eine Wartezeit einbauen, bis das erste Mailverfassen abgeschlossen ist. Das klappt in der Praxis aber nicht.

Ich habe jetzt die Idee, mich benachrichtigen zu lassen und die "Mail verfassen"-Aktion auf einen Klick auf die Benachrichtigung zu verschieben. Dann brauche ich für das Mail erstellen keine Schleife mehr.

Herzliche Grüße
Micha
 
So, mein kleines Projekt ist endlich beendet. Danke für alle Hilfestellung!

Das machen die Profile:
Das eine Profil liest dem Kalender Testkalender aus und erstellt eine Liste aller heutigen Termine. Die Titel dieser Termine werden als einzelne Benachrichtigungen ausgegeben.
Drückt man eine dieser Benachrichtigungen, wird eine vorformulierte Mail entworfen, die man vor dem Abschicken noch ändern kann.

Voraussetzung ist, dass im entsprechenden Kalender ausschließlich die Geburtstage stehen und zwar in der Form Vorname Nachname und evtl. in Klammern das Geburtsjahr, also "Max Mustermann (1980)".

Hinweise
  • man benötigt das Plugin CalendarTask, Tutorial gibt es bei YouTube-Kanal baldapps.
  • statt den Kalender mit Tasker auszulesen, könnte man sich auch direkt vom Google-Kalender benachrichtigen lassen. Dann muss man diese Benachrichtigungen auslesen und darauf achten, dass man nur die richtigen Benachrichtigungen erwischt.
  • angepasst werden muss auf jeden Fall der Kalendername im Kontext des Profils und bei der Konfiguration der Aktion von CalendarTask
  • Außerdem natürlich die Domain, an die die Mails geschickt werden sollen.
Grüße,
Micha
 

Anhänge

  • Geurtstage.zip
    6,2 KB · Aufrufe: 40
  • Danke
Reaktionen: qwoka, rtwl und Hastenichgesehen

Ähnliche Themen

M
Antworten
23
Aufrufe
542
senior-ipaq
S
rtwl
Antworten
3
Aufrufe
432
rtwl
rtwl
J
Antworten
4
Aufrufe
178
rtwl
rtwl
Zurück
Oben Unten