Dynamische Templates für Todoist mit PowerShell
Inhalt
Einleitung
Ich habe es hier an Ort und Stelle schon häufiger erwähnt. Todoist ist – neben meinem Kalender – meine Schaltzentrale für alle Aufgaben und Dinge, die es zu erledigen gilt. Ohne meine Taskliste wäre ich vermutlich völlig aufgeschmissen. In Todoist sammle ich alles, was irgendwann erledigt werden muss. Aufgaben in aktuellen Kundenprojekten, E-Mails bei denen ich gegebenenfalls nochmal nachhaken sollte und die Erinnerung daran meinen Reisepass zu verlängern.
Häufig gibt es Aufgaben, die einem ähnlichen Muster folgen und immer wieder erledigt werden müssen. Es sind trotzdem keine klassischen Wiederkehrenden Aufgaben, weil sie eben doch nicht immer identisch sind. Beispiel gefällig? Wenn ich eine Kundenpräsentation vorbereite, sind immer wieder die gleichen Aufgaben zu erledigen. Inhalte für die Präsentation herausfinden, Demo vorbereiten und danach die entsprechende Nachbereitung. Oder noch ein Beispiel: Nach jedem Fußballspiel schreibe ich einen Bericht auf der Homepage, muss das Ergebnis beim Verband melden und mache einen Social Media Post.
Für solche Aufgaben bietet Todoist die Möglichkeit Templates anzulegen. Diese Möglichkeit nutze wiederum ich und gestalte meine wiederholbaren Aufgaben dynamisch.
Templates für Todoist
Todoist bietet die Möglichkeit Aufgaben via CSV-Datei zu importieren. Alle Einzelheiten dazu findest Du hier: https://get.todoist.help/hc/de/articles/360000748525-So-formatierst-du-deine-CSV-Datei-damit-du-sie-in-Todoist-importieren-kannst
Trotz der genannten Hilfeseite möchte ich Dir kurz an Ort und Stelle erklären, wie das mit dem Template funktioniert. Es ist nämlich ein bestimmtes Format erforderlich, damit Todoist die CSV-Datei importieren kann.
Die Spalten, die angegeben müssen sind folgendermaßen aufgebaut:
TYPE,CONTENT,PRIORITY,INDENT,AUTHOR,RESPONSIBLE,DATE,DATE_LANG,TIMEZONE
Spalte | Inhalt | Beschreibung |
---|---|---|
TYPE | task (Aufgabe), section (Abschnitt) oder note (Notiz) | Hier kannst Du den Typ des Objekts in der jeweiligen Spalte festlegen. |
CONTENT | name of task, name of section oder content of the note | Aufgabennamen oder Name der Sektion oder der Inhalte der Notiz. |
PRIORITY | 1, 2, 3 oder 4 | 1 ist die höchste Priorität, 4 die Niedrigste. |
INDENT | 1, 2, 3, 4, oder 5 | Hiermit kannst Du Subtasks herstellen, also die Aufgaben einrücken. 1 ist eine Hauptaufgabe. |
AUTHOR | username (ID) | Den Usernamen oder die ID des Autors. Am besten lässt du diesen Wert leer, dann wird automatisch Dein Name hinzugefügt. |
RESPONSIBLE | username (ID) | Den Usernamen oder die ID des Verantwortlichen. Wenn Du nicht mit anderen zusammenarbeitest, bist Du gleichzeitig der Autor und der Verantwortliche. Du kannst in diesem Fall das Feld leer lassen. |
DATE | due date and time | Das Fälligkeitsdatum bzw. die -uhrzeit. |
DATE_LANG | Language code | Die Sprache der zuvor getroffenen Zeitangabe. Z. B. de für Deutsch oder en für Englisch. |
TIMEZONE | Time zone | Damit kannst du die Zeitzone bestimmen. Auch diesen Wert kannst Du einfach leer lassen, falls du die Standardeinstellungen aus Todoist übernehmen möchtest. |
Die erstellte CSV-Datei kannst Du danach sehr einfach in Todoist importieren. Klicke dazu auf das passende Projekt und wähle dann im Menü den Punkt Import from template.
PowerShell Skript
Wie bereits erwähnt habe ich häufig ähnliche Aufgaben, die sich aber im Datum oder in Details unterscheiden. So habe ich mir zum Beispiel für neue Kundenprojekte ein PowerShell-Skript geschrieben, welches die Rahmenparameter abfragt und daraus eine CSV-Datei generiert, welche ich dann wiederum in Todoist importieren kann. Diese Rahmenparameter sind natürlich allem voran das Datum. Davon rückgängig müssen verschiedene Punkte bis zu einem gewissen Stichtag erledigt sein. Außerdem macht es einen Unterschied, ob ein Termin vor Ort beim Kunden stattfindet oder remote über eine Webkonferenz. Vor allem in der Reiseplanung.
Ein paar Befehle bzw. Commandlets von PowerShell möchte ich Dir hier gerne an die Hand geben. So kannst Du Dir ganz einfach selbst Skripte anlegen, die Dich dabei unterstützen eine CSV-Datei zu generieren und wiederkehrende Aufgaben zu importieren.
Mit dem Befehl Read-Host kannst Du erstmal die Rahmenparameter abfragen und diese einer Variable zuweisen. Bei mir ist das z. B.
$termin = Read-Host 'Name der Veranstaltung'
$datumHilfStart = Read-Host 'Start-Datum der Veranstaltung'
$datumHilfEnde = Read-Host 'End-Datum der Veranstaltung'
$intern = Read-Host '(I)nterne oder (e)xterne Veranstaltung?'
$vorOrt = Read-Host 'vor [O]rt Termin oder [W]ebkonferenz?'
$laufend = Read-Host '[N]eues oder [L]aufendes Projekt?'
Die Parameter nutze ich, um ein paar Datumswerte zu berechnen bzw. ins passende Format für die CSV zu ändern:
$datumTerminStart = $datumStart.ToString("dd.MM.yyyy")
$datumTerminEnde = $datumEnde.ToString("dd.MM.yyyy")
$datumPraesentation = $datumStart.AddDays(-1).ToString("dd.MM.yyyy")
Meine Bedingungen sind relativ einfach, weshalb ich die Parameter innerhalb meiner PowerShell-Datei einfach per If-Abfrage nutze. Wenn ein Termin vor Ort ist, sollen folgende Inhalte in die CSV-Datei. Zusätzlich gibt es dann noch die Unterscheidung, ob es sich um ein bereits laufendes Projekt handelt oder um ein völlig Neues.
if($vorOrt -eq "O"){
if($intern -eq "I"){
else{
Den eigentlichen Inhalt der CSV-Datei fülle ich, in dem ich die Variable $content befülle. Immer zuerst mit der Kopfzeile:
$content = "TYPE,CONTENT,PRIORITY,INDENT,AUTHOR,RESPONSIBLE,DATE,DATE_LANG`r`n"
Und danach mit dem eigentlichen Inhalt, z. B.
$content += "task,${termin}: Demo/Slides vorbereiten,1,1,Steffen (2298840),,$datumPraesentation,de`r`n"
Wie Du siehst nutze ich hier den zuvor berechneten Datumswert. Ich bereite also die Präsentation bzw. Demo standardmäßig einen Tag vor dem eigentlichen Termin vor. Manchmal ändert sich das in noch in meiner Wochenplanung, aber so ist es zumindest schon mal definiert und kann nicht vergessen werden.
Der Einfachheit halber speichere ich die CSV-Datei immer auf meinem Desktop. Dafür speichere ich den Pfad zum Desktop in einer Variable.
$filePath = [Environment]::GetFolderPath("Desktop")
Damit es keine Probleme mit dem Dateinamen wegen Sonderzeichen gibt, ersetze ich alle Sonderzeichen mit einem Unterstrich, bevor ich die CSV-Datei mit dem Namen des Termins auf meinem Desktop erstelle.
$pattern = '[^a-zA-Z]'
$termin = $termin -replace $pattern, ' '
[IO.File]::WriteAllLines($filePath + "\" + $termin + ".csv", $content)
Die erstellte Datei muss ich jetzt nur noch in Todoist importieren und habe dann alle Aufgaben für das neue (oder schon laufende) Kundenprojekt bereit.
Fazit
Natürlich lohnt sich eine solche Automatisierung immer erst, wenn es sich um wiederholbare Aufgaben mit einem erkennbaren Muster handeln. Ich spare mit meinem PowerShell-Skript jede Menge Zeit und kann mir immer sicher sein, keine Vorbereitung für einen Termin zu vergessen.
Das sorgt für Sicherheit und vor allem für ein befreiendes Gefühl und einen freien Kopf.
Was hältst Du von der Idee? Gibt es Aufgaben, die Du vielleicht ebenfalls automatisieren könntest? Ich freue mich über Deine Kommentare und Nachrichten!