Automatisierte Notizbuch Templates für OneNote
Wie kann ich ein komplettes Template für ein volles OneNote Notizbuch erstellen? Diese Frage ist mir vor ein paar Tagen auf twitter in meine Timelime “gespült” worden.
Für die Desktopversion kann man sich sehr einfach eine Datei mit der Endung .onepkg erstellen. Klick man auf diese Datei wird ein neues Notebook erstellt. Allerdings funktioniert das nur in der Windows Desktop Anwendung. Also habe ich mir mal angeschaut, was über Power Automate denn möglich ist.
Power Automate OneNote Connector…
Schauen wir uns erstmal den Connector und die dazu gehörigen Trigger für OneNote in Power Automate an:
Wie wir sehen, gibt es aktuell nur einen Connector für die OneNote Business Version. D.h. auch alle Trigger sind für die Business Version und funktionieren nicht für OneNote’s welche im persönlichen OneDrive liegen.
Welche Trigger stehen zur Verfügung:
- Abschnitt in einem Notizbuch erstellen
- Abschnitte aus einem Notizbuch abrufen/auslesen
- Alle Notizbücher abrufen/auslesen
- Eine Seite in Schnelle Notizen erstellen
- Eine Seite in einem vorhandenen Abschnitt erstellen
- Eine Seite löschen (noch Preview)
- Seiten aus einem bestimmten Abschnitt abrufen/auslesen
- Seiteninhalt abrufen/auslesen
- Seinteninhalt aktualisieren (noch Preview)
Was auf dem ersten Blick auffällt, ist das es keine Möglichkeit gibt via Power Automate ein neues Notzibuch zu erstellen. Also muss vorher manuell ein Notizbuch angelegt werden um es dann mit Abschnitte und Seiten zu füllen.
Wer sich in Powershell auskennt, kann über diese Möglichkeit ein scriptgesteuerten automatisierten Prozess erstellen. Doch ich möchte das ganze jetzt mit Power Automate weiter verfolgen und mit diesen Boardmittel eine Lösung bauen.
Ein möglicher Prozess…
Also wenn wir z.B. für ein Teams ein neues OneNote Notizbuch benötigen, erstellen wir ein neues Buch in einem passenden Kanal im Teams. Im nächsten Schritt müssen wir dem Anwender eine Möglichkeit geben, das neue Notizbuch auf Basis eines Templates automatisiere anpassen zu können.
Daher habe ich mir folgenden Prozess überlegt. Nachdem ein Notizbuch neu erstellt wurde, soll der Ersteller über ein Forms sich ein Template auswählen und damit den Prozess starten.
Das Forms…
Erstellen wir ein neues Forms mit zwei Eingabe-Möglichkeiten. Zuerst wir der Anwendende gefragt, welches Template verwendet werden soll. Das wird über eine Auswahlabfrage als Dropdown hinterlegt. Beispiele können Templates für Marketingkampagnen, Projekte oder auch Onboardings sein. Die zweite Frage ist eine frei Texteingabe. Hier muss der Anwendende den genauen Namen des neu erstellten OneNote Notizbuches eingeben.
Dieses Forms ist nun unser Trigger/Auslöser für den Power Automate Prozess.
Der Power Automate Prozess…
Da unser Ausgangspunkt ein Forms ist, startet unser Prozess damit das eine neue Antwort gesendet wird. Also benötigen wir folgende erste zwei Schritte im Prozess.
- der Trigger wenn eine neue Antwort eingeht
- die Antwortdetails müssen noch abgerufen, damit diese später auch ausgewertet werden können
Haben wir die Forms-Antworten abgerufen, machen wir so einen Abruf auch für die Notizbücher. Hier wird mit dem folgenden Schritt eine Liste von vorhandenen Notizbücher ausgelesen.
Die Notizbuch ID finden…
Wir haben nun die Inhalte der Forms Antwort und eine Liste mit Notizbücher zur Verfügung. Im kommenden Abschnitt müssen wir nun das richtige Notizbuch raussuchen und dazu die eindeutige Notizbuch-Key finden. Mit diesen Key arbeiten wir dann später weiter.
Das heißt erstmal das richtige Notizbuch aus der Liste herausfiltern. Dazu filtern wir die Notizbuchliste auf das Notizbuch, welches der Anwendende in das Forms eingetragen hat. Dazu nutzen wir die Funktion Array filtern.
In der Funktion wählen wir zuerst aus den Dynamischen Inhalten den “body” aus. Danach suchen wir den gleichen Dateinamen wie der Anwendende im Forms angegeben hat,
Somit haben wir nun Zugriff auf das richtige OneNote Notizbuch. Wie oben schon erwähnt benötigen wir für viele weitere Schritte den Notizbuchschlüssel (Key). Über den Filter bekommen wir allerdings zwei Werte. Den Namen und den Key.
{ “FileName”: “TeamsOneNoteTemplate”,
“Key”: “TeamsOneNoteTemplate|$|https://contexxtai.sharepoint.com/sites/Office365Training/Shared Documents/General/TeamsOneNoteTemplate” },
Daraus folgt wir müssen diesen Gesamtstring nur auf den Key-Wert reduzieren. Ich fasse das mal etwas zusammen, was in den nächsten vier Schritten passiert.
- Wir setzten ein findbares eindeutiges Endezeichen nach dem Key. Dazu schreiben wir am Ende “EOF” für EndOfFile
- Dann suchen wir die Startposition wo der Notizbuchschlüssel beginnt
- Nun benötigen wir das Ende vom Notizbuchschlüssel
- und zum Ende lesen wir nun den Schlüssel mit den zuvor ermittelten Start- und Endwerte aus.
Damit haben wir nun den Schlüssel in der Hand um weiter vorzugehen.
Das Template…
Um mit dem Template zu starten, müssen wir erst nachschauen welches Template im Forms ausgewählt wurde. Dies kann man mit geschachtelten Bedingungen gut abbilden.
In meinem Beispiel schauen wir zuerst, ob das Template “Project” ausgewählt wurde. Wenn nicht, fragen wir im Nein Zweig nach dem nächsten Template usw.
Wenn ja, bauen wir die OneNote Notizbuch Struktur mit Abschnitten, Seiten und Seiteninhalte auf.
Die Struktur…
Legen wir zuerst alle gewünschten Abschnitte für das ausgewählte Template an. Dazu nutzen wir die Funktion “Abschnitt in einem Notizbuch erstellen”.
Die Funktion benötigt zwei Parameter. Zum einem der Name des Abschnitts und den zuvor ermittelten Notizbuchschlüssel:
Nachdem nun die Abschnitte angelegt wurde, benötigen wir noch Seiten. Dazu müssen wir zunächst die neuen Abschnitte erst nochmal laden um damit arbeiten zu können. Dazu wird auch eine Aktion zur Verfügung gestellt, welche den Notizbuchschlüssel als Parameter braucht.
Dann filtern wir auf einen der neu angelegten Abschnitte um dafür eine Seite mit Inhalt anzulegen.
Im Parameter von wird das Ergebnis der Aktion “Abschnitte in Notizbuch abrufen” eingetragen:
Nachdem wir den Abschnitt nun selektiert haben, holen wir uns die Abschnitts-ID in eine Variable.
Die Abschnitts-ID und den Notizbuchschlüssel benötigen wir um eine neue Seite zu erstellen. Dazu verwendet man die Aktion “Seite in einem Abschnitt erstellen”:
Noch ein Tipp beim erstellen des Seiteninhaltes mit dieser Aktion. Klickt auf das Symbol </> in der Formatierungsleiste um eine HTML Syntax zu verwenden. Dadurch kann man direkt auch den Seitentitel mit anlegen.
Beispiel HTML Snippet:
<html> <head> <Title>Kickoff-Meeting</Title> </head> <body> <h3>Agenda</h3> <ul> <li>Topic 1</li> <li>Topic 2</li> <li>Topic 3</li> </ul> </body>
So ein Block von Aktionen wiederholt man einfach für jede Seite die erstellte werden soll:
So nun hat man eigentlich alle Werkzeuge zusammen um den eigenen OneNote-Template-Generator auf zu bauen. Ich hoffe der Eine oder Andere kann das gut verwenden und auch gerne weiterentwickeln.
Hier nochmal die Funktion bzw. den Ablauf das Beispiel als Video zum ansehen: