PowerShell & OneNote: Notizbuch, Abschnitte und Seiten anlegen

Natürlich lassen sich mit der PowerShell auch neue OneNote-Notizbücher und darin Abschnitte und Seiten anlegen. 

Zuerst starten wir mit einem leeren Notizbuch.

Der hierfür benötigte “NotebookPath” ist wie folgt aufgebaut:
$NotebookPath = “https://d.docs.live.net/[OneDrive-ID]/Dokumente/[NotizbuchName]/”
oder alternativ bei lokaler Ablage:
“C:\Temp\MeinNotizbuch\”
$NotebookPath = "https://d.docs.live.net/0123456789abcdef/Dokumente/MeinNotizbuch/"
# alternativ kann auch ein lokaler Speicherort verwendet werden:
#$NotebookPath = "C:\Temp\MeinNotizbuch\"

# neues Notizbuch erstellen:
$OneNote = New-Object -ComObject OneNote.Application
$Scope = [Microsoft.Office.Interop.OneNote.HierarchyScope]::hsNotebooks
[ref]$xml = ""
$OneNote.OpenHierarchy($NotebookPath, "", $xml, "cftNotebook")
Danach können Abschnitte (Tabs) zum Notizbuch hinzugefügt werden. Der “SectionPath” setzt sich wie folgt zusammen:
SectionPath = [NotebookPath] + [Abschnitts-Name] + “.one”

Also z.B. “https://d.docs.live.net/0123456789abcdef/Dokumente/MeinNotizbuch/ErsterAbschnitt.one
oder alternativ lokal:
“C:\Temp\MeinNotizbuch\ErsterAbschnitt.one”
# Pfad festlegen
$SectionPath = $NotebookPath + "ErsterAbschnitt" + ".one"

# neuen Abschnitt erstellen
[ref]$xmlSection = ""
$OneNote.OpenHierarchy($SectionPath, "", $xmlSection, "cftSection")
Mit der $xmlSection wird die ID des neu angelegten Abschnitts zurückgeliefert – diese wird benötigt, um Seiten in den Abschnitt einzufügen:
[ref]$newpageID = ''
$OneNote.CreateNewPage($xmlSection.Value,[ref]$newpageID,[Microsoft.Office.Interop.OneNote.NewPageStyle]::npsBlankPageWithTitle)
Nun noch den Seitentitel ($title.Value) anpassen und fertig:
[ref]$NewPageXML = ''
$OneNote.GetPageContent($newpageID.Value,[ref]$NewPageXML,[Microsoft.Office.Interop.OneNote.PageInfo]::piAll)

$null = [Reflection.Assembly]::LoadWithPartialName('System.Xml.Linq')
$xDoc = [System.Xml.Linq.XDocument]::Parse($NewPageXML.Value)

$title = $xDoc.Descendants() | Where-Object -Property Name -Like -Value '*}T'

if (-not $title) {
  throw 'Fehler: kann Titel der neuen OneNote Seite nicht auslesen'
}

$title.Value = "Meine erste Seite"
$onenote.UpdatePageContent($xDoc.ToString())
Das Ergebnis sieht dann so aus:
MeinNotizbuch

MeinNotizbuch

 
Print Friendly, PDF & Email
Speichere in deinen Favoriten diesen permalink.

2 Kommentare

  1. Hallo,

    tolle Anleitung – hat mir viel weitergeholfen

    jetzt fehlt mir nur noch der Inhalt der neu angelegten OneNote Seite

    Ich würde gerne eine Art Vorlage definieren die dann zur laufzeit als Inhalt der neuen Seite gleich mit eingefügt wird.

    Villeicht kannst du dazu ja nochmal was posten 🙂

    Gruß Lukas

     

     

    • Hallo Lukas,
      freut mich sehr, wenn Dir meine Anleitung weiterhelfen konnte.
      Leider habe ich bisher noch keinen Weg gefunden, eine “OneNote Seitenvorlage” als neue Seite einzufügen. Mein Workaround wäre, einen Abschnitt “Vorlagen” anzulegen und dort eine Seite mit dem gewünschten Inhalt zu erstellen. Der Inhalt dieser Seite lässt sich dann in die neu erstellte Seite kopieren.

      Wie Du das machen kannst, findest Du hier: https://scriptingfee.de/powershell-onenote-seiten-vorlagen-kopieren/

      Viele Grüße
      Simone

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*