PythonでOneNoteのページメタデータを読み取る方法

PythonでOneNoteのページメタデータを読み取る方法

OneNote .one ファイルは、ドキュメント全体の DOM を解析せずに読み取れるメタデータを格納しています。document レベルでは、Document.FileFormat がファイルが使用している OneNote のバリアントを示します。page レベルでは、各 Page が作者、作成タイムスタンプ、最終更新タイムスタンプ、階層レベルを保持します。Aspose.Note FOSS for Python は、これらを DocumentPage クラスを通じて公開します。


前提条件

pip install aspose-note

ドキュメントレベルのメタデータ

Document オブジェクトは 1 つのメタデータ プロパティを公開します:

プロパティ説明
doc.FileFormatFileFormatOneNote のバリアント: FileFormat.OneNote2010FileFormat.OneNoteOnline、または FileFormat.Unknown
from aspose.note import Document

doc = Document("MyNotes.one")
print(f"File format: {doc.FileFormat}")

ページレベル メタデータ

Page オブジェクトは次のものを保持します:

プロパティ説明
page.Authorstr | Noneページを作成したユーザーまたは所有者の表示名です。
page.CreationTimedatetime | Noneページが作成された日時です。UTC の Python datetime オブジェクトを返します。
page.LastModifiedTimedatetime | Noneページが最後に変更された日時です。
page.Levelint | Noneサブページのインデントレベルです。0 = トップレベルページ、1 = 第1レベルサブページ、2 = 第2レベル、など。

ステップ 1: すべてのページのメタデータを読み取る

from aspose.note import Document, Page

doc = Document("ProjectNotes.one")

for i, page in enumerate(doc, start=1):
    title = ""
    if page.Title and page.Title.TitleText:
        title = page.Title.TitleText.Text.strip()

    level = page.Level or 0
    indent = "  " * level

    author = page.Author or "(unknown)"
    created = page.CreationTime.strftime("%Y-%m-%d") if page.CreationTime else "(none)"
    modified = page.LastModifiedTime.strftime("%Y-%m-%d %H:%M") if page.LastModifiedTime else "(none)"

    print(f"{indent}[{i}] {title or '(untitled)'}")
    print(f"{indent}    Author:   {author}")
    print(f"{indent}    Created:  {created}")
    print(f"{indent}    Modified: {modified}")
    print(f"{indent}    Level:    {level}")

完全な例: メタデータ レポート

from aspose.note import Document

def print_metadata_report(one_path: str) -> None:
    doc = Document(one_path)

    print()

    for i, page in enumerate(doc, start=1):
        title = ""
        if page.Title and page.Title.TitleText:
            title = page.Title.TitleText.Text.strip()

        level = page.Level or 0
        prefix = "  " * level + f"[{i}]"

        parts = [prefix, f'"{title or "(untitled)"}"']
        if page.Author:
            parts.append(f"by {page.Author}")
        if page.CreationTime:
            parts.append(f"created {page.CreationTime.strftime('%Y-%m-%d')}")
        if page.LastModifiedTime:
            parts.append(f"modified {page.LastModifiedTime.strftime('%Y-%m-%d')}")

        print("  ".join(parts))

print_metadata_report("ProjectNotes.one")

サブページの検出

OneNoteでは、サブページは親ページの下に視覚的にインデントされます。page.Level プロパティはこのネストを反映します:

from aspose.note import Document

doc = Document("MyNotes.one")

for page in doc:
    level = page.Level or 0
    title = ""
    if page.Title and page.Title.TitleText:
        title = page.Title.TitleText.Text.strip()

    indent = "  " * level
    marker = "├─" if level > 0 else "•"
    print(f"{indent}{marker} {title or '(untitled)'}")

レベル値:

  • 0: トップレベルページ
  • 1: 第1レベルサブページ(インデント1つ)
  • 2: 第2レベルサブページ(インデント2つ)

  • すべてのタイムスタンプ(CreationTimeLastModifiedTime)は、存在する場合は UTC の datetime オブジェクトです。
  • page.Level は、レベルがバイナリ形式で保存されていないページに対して None を返します。None0 とみなし、page.Level or 0 を使用します。

参照

 日本語