PythonでOneNoteのページメタデータを読み取る方法
OneNote .one ファイルは、ドキュメント全体の DOM を解析せずに読み取れるメタデータを格納しています。document レベルでは、Document.FileFormat がファイルが使用している OneNote のバリアントを示します。page レベルでは、各 Page が作者、作成タイムスタンプ、最終更新タイムスタンプ、階層レベルを保持します。Aspose.Note FOSS for Python は、これらを Document と Page クラスを通じて公開します。
前提条件
pip install aspose-noteドキュメントレベルのメタデータ
Document オブジェクトは 1 つのメタデータ プロパティを公開します:
| プロパティ | 型 | 説明 |
|---|---|---|
doc.FileFormat | FileFormat | OneNote のバリアント: FileFormat.OneNote2010、FileFormat.OneNoteOnline、または FileFormat.Unknown。 |
from aspose.note import Document
doc = Document("MyNotes.one")
print(f"File format: {doc.FileFormat}")ページレベル メタデータ
各 Page オブジェクトは次のものを保持します:
| プロパティ | 型 | 説明 |
|---|---|---|
page.Author | str | None | ページを作成したユーザーまたは所有者の表示名です。 |
page.CreationTime | datetime | None | ページが作成された日時です。UTC の Python datetime オブジェクトを返します。 |
page.LastModifiedTime | datetime | None | ページが最後に変更された日時です。 |
page.Level | int | 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つ)
注
- すべてのタイムスタンプ(
CreationTime、LastModifiedTime)は、存在する場合は UTC のdatetimeオブジェクトです。 page.Levelは、レベルがバイナリ形式で保存されていないページに対してNoneを返します。Noneは0とみなし、page.Level or 0を使用します。