Wie man OneNote‑Tags in Python inspiziert

Wie man OneNote‑Tags in Python inspiziert

OneNote ermöglicht es Benutzern, Inhalte mit farbigen Markierungen zu annotieren: Sterne, Kontrollkästchen, wichtige Flaggen und benutzerdefinierte Beschriftungen. Aspose.Note FOSS for Python stellt diese Annotationen als NoteTag‑Objekte auf den Knoten RichText, Image, AttachedFile und Table über deren .Tags‑Eigenschaft bereit. Dieser Leitfaden zeigt, wie man sie liest.


Schritt-für-Schritt-Anleitung

Schritt 1: Installieren Sie Aspose.Note FOSS für Python

pip install aspose-note

Schritt 2: Laden Sie die .one-Datei

from aspose.note import Document

doc = Document("TaggedNotes.one")
print(f"Pages: {len(list(doc))}")

Schritt 3: Tags auf RichText‑Knoten finden

Die meisten Tags sind Textblöcken zugeordnet:

from aspose.note import Document, RichText

doc = Document("TaggedNotes.one")
for rt in doc.GetChildNodes(RichText):
    for tag in rt.Tags:
        print(f"[RichText] Label={tag.Label!r}  Icon={tag.Icon}  text={rt.Text.strip()!r}")

Schritt 4: Tags auf Bildern finden

from aspose.note import Document, Image

doc = Document("TaggedNotes.one")
for img in doc.GetChildNodes(Image):
    for tag in img.Tags:
        print(f"[Image] Label={tag.Label!r}  filename={img.FileName!r}")

Schritt 5: Tags in Tabellen finden

from aspose.note import Document, Table

doc = Document("TaggedNotes.one")
for table in doc.GetChildNodes(Table):
    for tag in table.Tags:
        print(f"[Table] Label={tag.Label!r}  widths={[col.Width for col in table.Columns]}")

Schritt 6: Alle Tags im gesamten Dokument sammeln

from aspose.note import Document, RichText, Image, Table

doc = Document("TaggedNotes.one")
all_tags = []

for rt in doc.GetChildNodes(RichText):
    for tag in rt.Tags:
        all_tags.append({"type": "RichText", "Label": tag.Label,
                         "CompletedTime": tag.CompletedTime, "text": rt.Text.strip()})
for img in doc.GetChildNodes(Image):
    for tag in img.Tags:
        all_tags.append({"type": "Image", "Label": tag.Label,
                         "CompletedTime": tag.CompletedTime, "file": img.FileName})
for table in doc.GetChildNodes(Table):
    for tag in table.Tags:
        all_tags.append({"type": "Table", "Label": tag.Label,
                         "CompletedTime": tag.CompletedTime})

print(f"Total tagged items: {len(all_tags)}")
for item in all_tags:
    print(item)

NoteTag Property Referenz

EigenschaftTypBeschreibung
Iconint | NoneNumerischer Tag-Form-Identifikator (Stern, Kontrollkästchen, Pfeil usw.)
Labelstr | NoneMenschenlesbare Beschriftungszeichenkette (z. B. "Important", "To Do")
FontColorint | NoneTextfarbe als ARGB‑Ganzzahl
Highlightint | NoneHervorhebungsfarbe als ARGB‑Ganzzahl
CreationTimedatetime | NoneZeitpunkt, zu dem das Tag erstellt wurde
CompletedTimedatetime | NoneZeitpunkt, zu dem das Tag abgeschlossen wurde (None, falls nicht abgeschlossen)
StatusTagStatusTagStatus.Completed, falls abgeschlossen, sonst TagStatus.Open

Filter für abgeschlossene vs ausstehende Tags

Tags, die abgehakt wurden (wie “To Do”-Kontrollkästchen) haben ein nicht-None CompletedTime Feld:

from aspose.note import Document, RichText

doc = Document("TaggedNotes.one")
pending, done = [], []

for rt in doc.GetChildNodes(RichText):
    for tag in rt.Tags:
        item = {"Label": tag.Label, "text": rt.Text.strip()}
        if tag.CompletedTime is None:
            pending.append(item)
        else:
            done.append(item)

print(f"Pending: {len(pending)}  Done: {len(done)}")
for p in pending:
    print(f"  [ ] {p['Label']}: {p['text']!r}")
for d in done:
    print(f"  [x] {d['Label']}: {d['text']!r}")

Erstelle ein NoteTag (Im Speicher)

Die Fabrikmethode NoteTag.CreateYellowStar() erstellt einen Tag‑Knoten, den Sie an neuen Inhalt im Speicher anhängen können:

from aspose.note import NoteTag

tag = NoteTag.CreateYellowStar()
print(f"Created tag: Icon={tag.Icon}  Label={tag.Label!r}")

Die In‑Memory‑Erstellung ist nützlich für die API‑Kompatibilität. Da das Zurückschreiben nach .one nicht unterstützt wird, können erstellte Tags nicht in einer Datei gespeichert werden.


Häufige Probleme

Keine Tags gefunden (Dokument gibt leere Tag-Listen zurück): Nicht alle .one-Dateien enthalten Tags. Vergewissern Sie sich, dass das Quell-Dokument Tags in Microsoft OneNote sichtbar hat, bevor Sie den Code debuggen.

tag.Label ist ein leerer String: Einige Tag‑Formen haben kein Textlabel in den Dateimetadaten. Verwenden Sie tag.Icon, um den Tag‑Typ programmgesteuert zu identifizieren.


Verwandte Ressourcen:

 Deutsch