はじめに
SharePoint 上のファイルを読み取ったり書き込んだりする手法に関する記事は多く出回っていますが、実は大別して3つほどの手法に分かれています。
しかし、それぞれどのようなアプローチに関する記事であるのかが初心者には判別が付きづらく筆者自身も混乱してしまった経験があるため、各手法についてどのような使い方であるのかなどをざっくりと整理してみました。
これから SharePoint を API で操作しようと思っている方はこちらを参考に、参考になる記事やドキュメントを探す手掛かりにしていただけると幸いです。
手法1. Microsoft Graph API
現在一番主流だと思う手法で、これから SharePoint を操作したい方はこちらの手法を使うことをお勧めします。
基本的には Microsoft Entra で Sites.Selected という権限を用いることになりますが、Sites.Read.All、Sites.ReadWrite.All、Sites.Manage.All、Sites.FullControl.All なども使うことができます。
使い方の概要
大まかに分けて下記2種類の権限を使って SharePoint の権限を操作します。
- Entra の権限
こちらは Sites.○○ の話。
Sites.○○.All 権限はテナント全てのサイトが見えたり操作できたりするようになってしまうため、基本的には Sites.Selected を振ることになります。 - ターゲットサイトの権限
SharePoint のサイト自体を対象に付与する権限。
GUI 上で設定する編集権限とは異なるものであるため、 Microsoft Graph API または PnP PowerShell を使って付与することになります。
Sites.Selected 権限を使っている場合は、ターゲットサイトの権限を管理してあげることで操作ができるサイトを制御してあげることができます。
SharePoint を Microsoft Graph API で操作できるようにするまでの手順については下記ドキュメントで細かく記載されているので、こちらを参考にしてください。
使う上での注意点
運用するうえで気を付ける点は下記の通りです。
1. サイト単位でしか権限の制御ができない
R/W 権限制御の最小粒度はサイトとなっているため、特定のサイトの指定ディレクトリだけに権限を与えるという事はできません。
後述の注意点にも繋がるのですが、その場合は別途プライベートチャネルを作成して API 操作専用のサイトを作ってあげた方が良いと思います。
2. Teams のプライベートチャネルは別サイトとして扱われる
これは Microsoft Graph 自体の制限ではないのですが、プライベートチャネルは別サイトとして扱われるためチームが持つサイトに対して権限を割り振ってもプライベートチャネル内のファイルを閲覧・操作することができません。
ただし、これは逆も然りでプライベートチャネルのサイトにだけ権限を割り振ると、チームの公開チャネルは閲覧できないようにしたまま特定のチャネルだけファイルの読み書きができるような構成にすることができます。
参考になる記事
参考になりそうな記事をいくつかピックアップしておきます。
筆者は2026/4/1時点での記事内容を基にピックアップしております。
1. Microsoft Fabric Python Notebook で SharePoint ドキュメントライブラリのファイルの取込み処理を作ってみる【無人フロー】
サービスプリンシパルに Sites.Selected 権限を振るところからサイト側に権限付与、実際にファイル取り込みまでの手順が書いてあります。
2. Microsoft Fabric Python Notebook で SharePoint ドキュメントライブラリのファイルの取込み処理を作ってみる【手動認可コードフロー】
こっちは手動認可フローを使った方法
3. サービスプリンシパルに SharePoint Online の特定サイトのみに権限を付与してみた
こちらは Microsoft Graph API を使ってサイトの権限も付与するやり方が掲載されています。
curl コマンドで操作しているので、 PnP PowerShell を使わない場合はこちらを見ればどんな内容を入れればいいのかなんとなくわかるはず。
最初に Sites.FullControll.All を付けて途中で権限を外している意図が若干つかみづらいですが、この記事では権限の付与と実際のファイル操作を同じサービスプリンシパルで行っているために強権限を付けたり外したりしています。
実際には Sites.FullControll.All を持った管理用サービスプリンシパルが Sites.Selected を持ったファイル操作用サービスプリンシパルに対して権限を振るような構成になると思います。
手法2. X.509 証明書を利用して SharePoint のアクセストークンを取得した SharePoint API
多分これが紛らわしく感じる原因だと思います。
Azure AD アプリケーションを使用して SharePoint を操作するために現在有効な手法の一つにSharePoint アドインモデルを使用したものがあります。
こちらはこれまで後述する手法3を使用していた場合に、処理システムの更新を最小限で抑えたい場合に選択肢となりそうな手法になります。
使い方の概要
こちらも API を発行するために Entra ID の権限が必要になるというのは同じですが、いくつかの相違点があります。
- Microsft Graph API ではなく SharePoint API を使う
- サイトに対する権限制御は SharePoint Online 管理 Central にて行う
- アクセストークンを取得できるようにするための事前の準備を行う必要がある
特に重要なのは3つ目の方で、恐らくこの方法を検討している方はアクセストークンの認証を Azure ACS から Entra ID に更新しようとしている方なのかなと思います。
手順については下記ドキュメントに記載してありますが、参考記事の内容も読むと理解しやすいと思います。
使う上での注意点
そのままタイトルにもありますが、この方法はアクセストークンを取得するときに X.509 証明書というものを用いて認証を行う必要があります。
通常、アクセストークンを取得する場合はクライアントシークレットを使って認証を行いますが、 SharePoint API を実行する場合においてはクライアントシークレットの認証を使うことができません。
事前の準備が大変なので、どうしても SharePoint API を使い続けたい場合にだけ使った方が良いかもです。
参考になる記事
恐らくほぼ唯一この方法を日本語で詳細に記載しているであろう記事です。
証明書の取得やアップロードなど、丁寧に手法が記載されています。
手法3. 【廃止】 Azure ACS を使ってアクセストークンを取得した SharePoint API
この方法は現在非推奨のものであり、2026/4/2以降は使うことができなくなる手法になります。
本記事ではそれぞれの手法の区別を行うために紹介しております。
基本は手順2の手法と同じですが、認証に Azure ACS (Access Control Services for SharePoint Online) を使用してアクセストークンを取得するものになります。
始めに記載しているように、こちらは廃止されたものになるのでこれから初めて触る方は手順1の方法で SharePoint を操作することを強く推奨します。
使い方の概要
基本的なものは手順2に記載した通りですが、前述の通りアクセストークンの取得方法が異なります。
より具体的には、手順1や2では "https://login.microsoftonline.com/" からトークン取得を行いますが、この手順では "https://accounts.accesscontrol.windows.net/" からトークンの取得を行っています。
使う上での注意点
そもそも使うこと自体を推奨していないので、とりあえずこの手法はレガシーな手法であることだけ覚えておいてください。
参考になる記事
どれが Azure ACS を使ってアクセストークンを取得しているような手法なのか自分で判別できるように、いくつか手順が記載されている記事をピックアップしておきます。
まとめ
SharePoint 上のファイルを操作するのに複数の API が存在してそれぞれの使い方が大きく異なっているのに、それぞれを区別した記述が見つからなかったので知識の整理がてら書いてみました。
とにかく、これから始めたい方は手順1に示した Microsoft Graph API の方法だけ知っておけばOKです。