Microsoft GraphでSharePoint/OneDriveのWord・PowerPoint・PDFインラインコメント(校閲コメント)を取得できない理由と代替案

SharePoint Online/OneDrive for Business のドキュメント ライブラリに保存した Word・PowerPoint・PDF に付いた「本文中(インライン)の校閲コメント」を、Microsoft Graph で取得したい——しかし API が見当たらず詰まる場面は少なくありません。本記事では、公式 API の対応状況、混同しやすい“別のコメント”との違い、そして要件別の現実的な代替案を整理します。

目次

結論:Microsoft Graph でも SharePoint REST API でも、本文中(インライン)の校閲コメントを一覧取得する公式 API は提供されていない

現時点では、SharePoint/OneDrive 上にある Word/PowerPoint の「本文中(インライン)の校閲コメント」を、Microsoft Graph API で取得できる公式エンドポイントはありません。さらに、同様に SharePoint 側の REST API でも当該コメントを取得できる公式 API は提供されていない、という整理になります。

加えて、「今後追加される予定は?」という点についても、Microsoft Q&A(Microsoft 外部スタッフの回答)では、Graph での当該機能対応に関して 現時点で予定が明確に示されていない旨が案内されています。したがって、要件を満たすには 設計を変える(代替手段に寄せる)ことが現実的です。

「コメント」が複数あるのが落とし穴:まず“どのコメント”を取りたいのかを切り分ける

「コメントが取れない」と感じる多くのケースは、実は欲しいコメントの種類が Graph/SharePoint REST の対象外であることが原因です。特に SharePoint/OneDrive には、似ているけれど保存場所や意味が違う“コメント”が複数存在します。

コメントの種類ユーザーが見る場所(例)性質Graph/SharePoint REST の扱い混同ポイント
Word/PowerPoint の本文中(インライン)の校閲コメントWord/PowerPoint の「校閲」・コメントペイン/吹き出しファイル内容(OOXML)に紐づくレビュー情報公式 API での一覧取得は不可「SharePoint 上のファイルだから Graph で取れるはず」と期待しがち
PDF の注釈(アノテーション)PDF ビューアの付箋/ハイライト/手書きPDF 内部(注釈オブジェクト)に格納ファイルをダウンロードして解析が基本「SharePoint のコメント」と同一視しがち
SharePoint のリストアイテム/ドキュメントのアクティビティコメントドキュメント ライブラリの情報ペイン/アクティビティ“リストアイテム”へのコメントSharePoint REST で取得できるケースがある本文中コメントとは別物でも UI が似ていることがある
バージョン履歴の「チェックインコメント」バージョン履歴版管理メタデータコメントと誤認しやすい(別データ)レビューコメントの代替にはなりにくい
Excel のコメント(セルコメント/スレッド)Excel のセルコメントWorkbook API が存在Graph の Workbook API で扱える範囲がある「Workbook コメント API がある=Word もある」と誤解されがち

なぜ Microsoft Graph にエンドポイントが見当たらないのか

Microsoft Graph は SharePoint/OneDrive 上のファイルを driveItem として扱い、取得できるのは基本的に「ファイルそのものの取得」「メタデータ」「権限」「バージョン」「変更検知」などの“ファイル管理”系が中心です。

一方、Word のブックマークやコメント、PowerPoint のスライド内要素といった“文書内容レベル”の操作・参照は Graph の守備範囲ではなく、Microsoft Q&A でも Graph に Word 用の専用 API が存在しない旨が明言されています。つまり「Graph はファイルを管理できるが、Word の中身を“理解して”コメントだけ返す API ではない」という立ち位置です。

Excel については例外的に Workbook API が整備されており、コメント系の API も提供されています。しかし、その API を Word/PowerPoint に対して使おうとしても想定どおり動作しない、という報告が継続しています。

SharePoint REST API なら取れる?:取れる“コメント”と取れない“コメント”を分けて考える

「SharePoint REST API のほうが古参で機能が多いから取れるのでは?」と考えるのは自然ですが、本文中の校閲コメント(Word/PowerPoint)を返す公式 REST は存在しないという結論になります。

SharePoint REST で取得できる可能性があるのは「リストアイテムのコメント」

SharePoint Online には、リスト/ライブラリのアイテムに対して付く「アクティビティのコメント」を取得する REST エンドポイントが知られています。たとえば Stack Overflow では、Comments() は Files ではなく Items 側にぶら下がることが説明されています。これは“ドキュメント本文中のコメント”ではなく、“ライブラリのアイテム(リストアイテム)”へのコメントです。

GET https://{tenant}.sharepoint.com/sites/{site}/_api/web/lists/getbytitle('{library-name}')/items({item-id})/Comments

この系統のコメントが要件を満たす場合(たとえば「ファイル単位で議論できればよい」「本文のどこに付いたかは不要」など)は、SharePoint REST の活用が“代替案”になり得ます。ただし、Word/PowerPoint の校閲コメントの完全な代替にはならないケースが多い点に注意が必要です。

ロードマップ・今後の対応予定を追う方法

現時点で公式 API がない以上、「いつか対応されるかもしれない」を待つよりも、次の2点を並行して進めるのが実務的です。

  • Feedback Portal(要望)に投票・登録して同様のニーズを可視化する
  • Microsoft 365 Roadmap を定期的に確認し、関連する更新が出ないか監視する

Microsoft Q&A でも、フィードバック登録とロードマップ追跡が案内されており、少なくとも当該 Q&A 時点では「予定されている更新はない」旨が述べられています。

代替案は大きく2系統:サーバー側で解析するか、クライアント側で取得するか

公式 API で“コメント一覧”を直接取れない前提では、代替案は次の2系統に整理できます。

系統代表例強み弱み向いている要件
サーバー側でファイルを解析Graph でダウンロード → docx/pptx/pdf を解析ユーザー操作不要でバッチ化できる/過去分もまとめて抽出可能実装コスト高/“モダンコメント”の完全再現が難しい/セキュリティ設計が重い監査・移行・レポート用途で大量処理したい
クライアント側で取得(Office アドイン)Word の Office.js でコメント取得 → 自システムへ送信Word のコメント API が使える/UI と整合しやすいユーザーが開く運用が必要/PowerPoint ではコメント API が不足しがちレビュー運用に組み込みたい/“今開いている文書”のコメントが欲しい

代替アプローチ1:ファイル本体をダウンロードして解析する(Open XML/PDF)

最も汎用的なのは、Graph(または SharePoint)でファイル本体を取得し、アプリ側でコメントを抽出する方式です。Graph にはファイル内容を取得するエンドポイントがあるため、「コメントだけ返す API」が無い代わりに「ファイルを取得して自前で読む」設計に寄せます。

Graph での基本形:コンテンツを取得して解析へ回す

GET https://graph.microsoft.com/v1.0/sites/{site-id}/drive/items/{item-id}/content

現場では次のような構成が多いです。

  • Graph でライブラリ内の対象ファイルを列挙(または変更検知)
  • 対象ファイルを /content でダウンロード
  • 拡張子ごとに解析パイプライン(docx/pptx/pdf)へ振り分け
  • 抽出したコメントを DB へ格納し、検索・可視化・監査レポートに利用

Word(.docx)のコメント抽出:基本は comments.xml、ただし“モダンコメント”が難所

.docx は Office Open XML(OOXML)形式で、ZIP の中に XML パーツが入っています。一般的なコメント情報は word/comments.xml に格納され、本文側は word/document.xml に「どの範囲にコメントが紐づくか(アンカー)」が入ります。

ただし Microsoft 365 のモダンコメントでは、従来の comments.xml だけでは足りず、追加情報を保持する拡張パーツ(commentsExtended)が関係することがあります。Office の仕様書では commentsExtended パートのルート要素として commentsEx が定義されていることが示されています。

そのため、要件が「本文中のコメント本文だけ欲しい」のか「スレッド構造・解決状態(Resolved)・メンション・作成者メールなども含めて正確に再現したい」のかで、難易度が大きく変わります。Word 側でもモダンコメントは共同編集を前提に進化しており、体験の統一や @mention などが説明されています。

Python(概念例):comments.xml を読む最小サンプル

あくまで「コメント本文を抜き出す」最小イメージです(実運用では namespce、アンカー対応、モダンコメント拡張などが必要になります)。

import zipfile
import xml.etree.ElementTree as ET

DOCX_PATH = "sample.docx"

with zipfile.ZipFile(DOCX_PATH) as z:
xml = z.read("word/comments.xml")

root = ET.fromstring(xml)
ns = {"w": "[http://schemas.openxmlformats.org/wordprocessingml/2006/main"}](http://schemas.openxmlformats.org/wordprocessingml/2006/main%22})

for c in root.findall("w:comment", ns):
cid = c.get(f"{{{ns['w']}}}id")
# コメント本文(w:t の結合)
text = "".join(t.text or "" for t in c.findall(".//w:t", ns))
print(cid, text)

PowerPoint(.pptx)のコメント抽出:Open XML SDK でも“モダンコメント”前提に変わってきている

.pptx も OOXML で、コメントはプレゼンテーション内のパーツとして保持されます。Microsoft Learn の Open XML SDK ドキュメントには、PowerPoint の(モダン)コメントを追加するサンプルが示されており、従来の「スライドにコメントを持たせる」というモデル自体は OOXML として扱えることが分かります。

ただし PowerPoint のコメントもモダン化が進んでおり、コメント ペイン中心の体験や、テキストへのアンカーなどが説明されています。ファイル構造や状態管理(解決済みなど)を“UI と同じ意味で”再現する場合は検証が必要です。

PDF のコメント(注釈)抽出:PDF 解析ライブラリが必要

PDF のコメントは、多くの場合「注釈(annotation)」として PDF 内に保持されます。Graph や SharePoint が“注釈だけ JSON で返す”ような API を用意しているわけではないため、PDF をダウンロードして PDF 解析ライブラリで抽出するのが基本ルートになります。

サーバー解析方式の注意点:想像以上に「再現性」と「コスト」が効いてくる

論点ありがちな落とし穴対策の方向性
モダンコメントの差分スレッド/解決状態/メンションなどが取り切れない必要な粒度を先に定義し、「本文+作成者+日時」など最小要件へ絞る
ファイル形式の混在.doc/.ppt などバイナリ形式が混ざると解析不能前処理で docx/pptx へ変換する運用(変換基盤)を検討
スケールと変更検知全件ダウンロードは帯域・コスト・時間が膨らむ変更検知(差分)を使い「変わったものだけ再解析」へ寄せる
権限と監査ダウンロードは情報持ち出しになりやすく監査が厳しい最小権限、保管期限、暗号化、アクセスログなどの設計を先に通す

代替アプローチ2:Office アドイン(Office.js)で“ユーザーが開いたタイミング”に取得する

「ユーザーが Word/PowerPoint を開く運用がある」「レビューのワークフローに組み込める」なら、Office アドイン(Office.js)側でコメント情報を取得して自システムへ送信する設計が成立することがあります。

Word はコメント API がある:Word.Comment で取得・解決状態も扱える

Word の Office.js には Comment オブジェクトがあり、作成者、本文、作成日、返信、解決状態(resolved)などのプロパティが定義されています。つまり「Graph では取れないが、Word のクライアント(または Web)上では取れる」という世界線が存在します。

Word アドインでコメントを列挙するイメージ(概念例)

await Word.run(async (context) => {
  // 例:ドキュメント全体からコメントを取得(範囲指定は要件で調整)
  const comments = context.document.body.getComments();
  comments.load("items");
  await context.sync();

for (const c of comments.items) {
c.load(["id", "content", "authorName", "authorEmail", "creationDate", "resolved"]);
}
await context.sync();

const payload = comments.items.map(c => ({
id: c.id,
content: c.content,
authorName: c.authorName,
authorEmail: c.authorEmail,
creationDate: c.creationDate,
resolved: c.resolved
}));

// ここで自社 API に送信する(fetch 等)
console.log(payload);
});

この方式の良い点は、Word の実装に沿ってコメント情報を取得できるため、モダンコメントの状態(少なくとも UI と整合しやすい形)で扱える可能性が高いことです。一方で、「ユーザーが開かなければ取れない」「バックグラウンド一括収集には向かない」という制約も明確です。

PowerPoint は Office.js で“スライドコメント”を直接扱えないケースがある

PowerPoint の Office.js はスライドや形状などの操作が中心で、コメント操作については「現状は提供されていない」とする開発者向けの議論が継続しています。したがって、Word と同じノリで PowerPoint コメントを扱う設計は、そのままでは成立しない場合があります。

代替アプローチ3:“コメントを取る”から“レビュー情報を残す”へ要件を言い換える

本当に欲しいのが「本文中のコメント」そのものではなく、たとえばレビューの履歴や指摘事項の一覧、誰が何を指摘したかであれば、保存先を最初から“API で取りやすい場所”に寄せるのも強い戦略です。

  • ドキュメント ライブラリの列(メタデータ)に「レビュー結果」「ステータス」「最終指摘日」などを持たせる
  • 別の SharePoint リストを用意し、指摘をアイテムとして管理する(ファイル URL・段落番号・スクリーンショットなどを添付)
  • 「本文中コメント」は残しつつ、外部連携が必要な情報だけを運用で二重記録する

この方針は一見遠回りに見えますが、「監査やワークフローで本当に必要な情報だけを確実に回収できる」「API 変更待ちの不確実性がなくなる」というメリットがあります。

要件別:おすすめの選び方

要件おすすめ理由注意点
過去分も含め、コメントを一括で抽出して監査・移行したいダウンロードして解析(サーバー側)バッチ処理できる/ユーザー操作不要実装コストと再現性(モダンコメント)が課題
レビュー運用の中で、開いた瞬間のコメントを同期したいWord アドイン(Office.js)Word のコメント API を使えるユーザーが開く前提/PowerPoint は要検証
本文位置は不要で、ファイル単位で議論できればよいSharePoint アイテムコメント(REST)“ファイルの周辺”の議論を API 化しやすい本文中コメントとは別物
「コメント抽出」より「レビュー記録」が主目的メタデータ/別リスト設計API で確実に取れる形に寄せられる運用変更が必要

実装前にチェックしたい“よくある失敗”

  • 「SharePoint のコメント」と「Word の校閲コメント」を同一視してしまう(UI が似ていて混ざる)
  • Excel の Workbook コメント API を Word に流用しようとして時間を溶かす
  • “モダンコメント”前提を見落として、解析が途中で破綻する(スレッド/解決状態/メンション)
  • ダウンロード方式で、権限・ログ・保管期限の設計が後回しになる
  • PowerPoint も Word と同じように Office.js で取れると思い込む

補足:SharePoint の「注釈(Annotations)」機能は別物だが、運用の代替になることがある

SharePoint のドキュメント ビューアには「注釈(ペン/蛍光ペンなど)を付ける」体験があり、原本を変更せずにコメント的な情報を残せる機能が説明されています。これは Word の校閲コメントや PDF 注釈と同じではありませんが、「ファイルに手を入れずにレビュー痕跡を残したい」という業務要件の一部を置き換えられる場合があります。

まとめ:Graph で“そのまま取る”発想を捨て、要件に合わせて経路を選ぶ

SharePoint/OneDrive 上の Word/PowerPoint(および PDF)に付いた本文中(インライン)の校閲コメントを、Microsoft Graph で一覧取得する公式 API は現時点で提供されていません。SharePoint REST でも同様です。

したがって、現実的には次のいずれかに寄せる必要があります。

  • サーバー側でファイルをダウンロードして解析する(Open XML/PDF 解析)
  • Word は Office.js アドインで取得する(レビュー運用に組み込む)
  • レビュー情報の保存先を API で扱いやすい設計に変える(メタデータ/別リスト)

「どのコメントを、どの粒度で、どのタイミングで集めるのか」を先に言語化すると、最短ルートで設計が決まります。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次