【ClaudeCode】SharePointのリンクが開けない時はWebDAVのパスで読ませる|CLAUDE.mdで自動変換

スポンサーリンク
Claude
スポンサーリンク

会社のPC(Windows)で、Claude CodeにSharePointにあるファイルを読ませようとした。ブラウザーで開いたSharePointのフォルダのリンク(https://で始まるもの)をそのまま貼り付けたところ、「SharePointはWebFetchでもMCPでも開けない」と言われて止まってしまった。

結論から書くと、httpsのリンクを「\\会社名.sharepoint.com@SSL\DavWWWRoot\…」というWebDAVの形に書き換え、まず人がエクスプローラーで開いてサインイン情報(認証情報)を得てから、Claude Codeにもその形で渡したら読めた。さらにCLAUDE.mdに読み替えのルールを書いておいたら、その後はhttpsのリンクを貼るだけで、Claude Codeが自分でWebDAVの形に切り替えて読んでくれるようになった。

起きたこと

最初はブラウザーのアドレスバーにあるSharePointのリンクを、そのままClaude Codeに貼り付けた。返ってきた答えは、SharePointはWebFetch(Claude CodeがWebページを読みに行く機能)でもMCPでも開けない、というものだった。

そこで「他のやり方を考えて」と頼んだら、Claude Codeが提案してきたのがWebDAVの形のパスだった。Windowsには、WebDAVという仕組みでWebサーバー上のファイルをネットワークフォルダのように開く機能がある。SharePointもこの形で開けるので、Claude Codeからは普通のフォルダと同じようにファイルとして読める、という話だ。

言われたとおりに書き換えたパスを、私がまずエクスプローラーで開き、そのうえでClaude CodeにもWebDAVの形で読むよう伝えたら、中のファイルが読めるようになった。

まず試す手順

1. httpsのリンクをWebDAVの形に書き換える

SharePointのフォルダを開いたときのリンクが、たとえば次の形だったとする(「会社名」「チーム名」「フォルダ名」は自分の環境のものに読み替える)。

https://会社名.sharepoint.com/sites/チーム名/Shared%20Documents/フォルダ名

これを、次のように書き換える。

\\会社名.sharepoint.com@SSL\DavWWWRoot\sites\チーム名\Shared Documents\フォルダ名

書き換えのルールは4つだけだ。

  • 先頭の「https://」を「\\」にする
  • 「会社名.sharepoint.com」の後ろに「@SSL\DavWWWRoot」を付ける(@SSLはhttpsで接続するという意味)
  • 残りの「/」を「\」にする
  • 「%20」などの記号を元の文字に戻す(「%20」は半角スペース。日本語のフォルダ名も「%E8%B3%87…」のような形になっていたら元の日本語に戻す)

最後の「%20を戻す」は忘れやすい。Microsoftのドキュメントによると、Windows 10 バージョン1803以降は、パスの中の「%20」がスペースとして扱われず、「%20」という文字そのものとして扱われる。戻さないと別の名前のフォルダを探しに行ってしまう。

手で書き換えるのが面倒なら、PowerShellに次の7行を貼り付ける。1行目の""の中を、自分のSharePointのリンクに置き換えて使う。最後の行に、書き換えたパスが表示される。

$url = "https://会社名.sharepoint.com/sites/チーム名/Shared%20Documents/フォルダ名"
$u = [Uri]$url
$p = $u.AbsolutePath
if ($u.Query -match '[?&]id=([^&]+)') { $p = $Matches[1] }
$p = [Uri]::UnescapeDataString($p) -replace '^/:[a-z]+:/r', ''
$p = $p.TrimEnd('/') -replace '/', '\'
"\\$($u.Host)@SSL\DavWWWRoot$p"

4行目は、リンクが「…/Forms/AllItems.aspx?id=…」の形のとき(ドキュメントライブラリの一覧画面から開いたときなど)に、「id=」の後ろにあるフォルダの場所を取り出すためのものだ。5行目の「/:f:/r」などを消す部分は、「…sharepoint.com/:f:/r/sites/…」のような形のリンク用。リンクの後ろに「?web=1」などが付いていても、その部分は無視される。

Windows 11のWindows PowerShell 5.1で、次の5種類のリンク(会社名は架空のcontoso)を変換して、すべて想定どおりのパスになることを確かめた。

変換前: https://contoso.sharepoint.com/sites/team/Shared%20Documents/%E8%B3%87%E6%96%99/2026
変換後: \\contoso.sharepoint.com@SSL\DavWWWRoot\sites\team\Shared Documents\資料\2026

変換前: https://contoso.sharepoint.com/sites/team/Shared Documents/資料/report.xlsx?web=1
変換後: \\contoso.sharepoint.com@SSL\DavWWWRoot\sites\team\Shared Documents\資料\report.xlsx

変換前: https://contoso.sharepoint.com/sites/team/Shared%20Documents/Forms/AllItems.aspx?id=%2Fsites%2Fteam%2FShared%20Documents%2F%E8%B3%87%E6%96%99&viewid=abc
変換後: \\contoso.sharepoint.com@SSL\DavWWWRoot\sites\team\Shared Documents\資料

変換前: https://contoso.sharepoint.com/:f:/r/sites/team/Shared%20Documents/%E8%B3%87%E6%96%99?csf=1&web=1&e=xyz
変換後: \\contoso.sharepoint.com@SSL\DavWWWRoot\sites\team\Shared Documents\資料

変換前: https://contoso.sharepoint.com/sites/team/Shared%20Documents/
変換後: \\contoso.sharepoint.com@SSL\DavWWWRoot\sites\team\Shared Documents

ただし「…/:f:/s/…」のような、後ろにランダムな英数字が続く共有リンクは、フォルダの場所がリンクに入っていないので変換できない。その場合はリンクをブラウザーで開き、表示されたフォルダのアドレスバーのリンクを使う。

2. 人がエクスプローラーで開いて、認証情報を得る

書き換えたパスをエクスプローラーのアドレスバーに貼り付けて、Enterを押す。SharePointのフォルダの中身がエクスプローラーに表示されればOKだ。

この手順は、SharePointへのサインイン情報(認証情報)を最初に得るためのものだ。WebDAVでSharePointにつなぐWindowsの仕組み(WebClientサービス)は、自分でサインインの画面を出せない。人がエクスプローラーで開いてサインインを済ませておくと、その後はClaude Codeが同じパスを読むときにも、そのサインイン情報が使われる(詳しくは後半の「なぜ」で説明する)。

サインイン情報には期限がある。しばらくしてClaude Codeが急に読めなくなったら、もう一度この手順でエクスプローラーから開けばよい。

エクスプローラーでも開けないときは、WebDAVを受け持つWindowsの「WebClient」サービスの状態を見る。PowerShellで次の1行を実行すると、状態(Status)と起動の種類(StartType)が表示される(見るだけで、何も変更しない)。

Get-Service WebClient | Format-List Name,DisplayName,Status,StartType

Microsoftのドキュメントでは、StartTypeが「Disabled」(無効)だとSharePointをネットワークドライブとして使う機能は正しく動かず、「Manual」(手動)か「Automatic」(自動)にする必要があるとされている。私の自宅のPC(Windows 11)では、Statusが「Stopped」、StartTypeが「Manual」だった。WebClientサービスはWindowsで既定では開始されない(Microsoftの非推奨機能の一覧にもそう書かれている)ので、Stoppedでも異常ではない。会社のPCでDisabledになっていたら、自分で設定を変えずに社内のIT担当に相談するのが無難だ。

3. Claude CodeにWebDAVの形で渡す

エクスプローラーで開けたら、同じパスをClaude Codeに渡す。たとえば次のように頼む。

次のフォルダにあるファイルを読んで、内容を要約して。
WebFetchではなく、ネットワーク上のフォルダとして読んでください。
\\会社名.sharepoint.com@SSL\DavWWWRoot\sites\チーム名\Shared Documents\フォルダ名

私の環境では、これでClaude Codeがフォルダの中のファイルを読めるようになった。

CLAUDE.mdに読み替えルールを書いておく

毎回自分で書き換えるのは面倒なので、CLAUDE.mdに読み替えのルールを書いた。これで、その後はhttpsのリンクを貼っても、Claude Codeが自分でWebDAVの形に切り替えて読んでくれるようになった。

CLAUDE.mdは、Claude Codeが毎回の会話の最初に読み込む指示書のファイルだ。公式ドキュメントによると、置き場所によって効く範囲が変わる。

  • ~/.claude/CLAUDE.md(ユーザーフォルダの.claudeフォルダの中):自分が使うすべてのプロジェクトで効く
  • 作業フォルダの CLAUDE.md(または .claude/CLAUDE.md):そのプロジェクトだけで効く。Gitで共有するとチームのメンバーにも効く

SharePointはどの作業でも出てくるなら、~/.claude/CLAUDE.md に書いておくのが楽だ。書く内容の例は次のとおり(会社名は自分の会社のSharePointのものに置き換える)。

## SharePointのリンクの読み方
- 「https://会社名.sharepoint.com/」で始まるリンクを渡されたら、WebFetchやMCPは使わず、WebDAVのパスに読み替えて、ネットワーク上のフォルダとして読む。
- 読み替え方: 「https://会社名.sharepoint.com」を「\\会社名.sharepoint.com@SSL\DavWWWRoot」にし、残りの「/」は「\」にする。「%20」などのURLエンコードは元の文字(半角スペースや日本語)に戻す。
- 例: https://会社名.sharepoint.com/sites/チーム名/Shared%20Documents/資料 は \\会社名.sharepoint.com@SSL\DavWWWRoot\sites\チーム名\Shared Documents\資料 として読む。
- 「…/Forms/AllItems.aspx?id=…」の形のリンクは、id= の後ろの部分(URLエンコードを戻したもの)をフォルダの場所として使う。
- 読めないときは、私にそのパスをエクスプローラーで一度開くよう頼む。
- SharePoint上のファイルは読むだけにして、作成・変更・削除はしない。

最後の「読むだけにする」は入れておくことをすすめる。WebDAVの形で開いたSharePointは、エクスプローラーと同じようにファイルの書き込みや削除もできてしまう。Claude Codeが作業のついでに会社の共有ファイルを書き換えたり消したりしないよう、はっきり書いておくと安心だ。なお公式ドキュメントにもあるとおり、CLAUDE.mdは「守ってほしい指示」であって、操作を強制的に止める設定ではない。大事なフォルダを触らせるときは、Claude Codeが書き込み・削除の許可を求めてきた時点で断るようにしたい。

なぜhttpsのリンクだと開けないのか

httpsのリンクは、サインインしていないと追い返される

SharePoint Onlineは、サインインしていないアクセスには中身を返さない。実際に、サインイン情報なしでSharePoint Online(Microsoft自身のmicrosoft.sharepoint.com)のドキュメントライブラリのURLにアクセスしてみると、ブラウザーと同じ形で頼んだ場合はサインイン用のページ(/_layouts/15/Authenticate.aspx)へ転送され、それ以外は「401」(認証が必要)が返ってきた。401のときは、次のメッセージが付いていた(2026年11月14日に確認)。

Access denied. Before opening files in this location, you must first browse to the web site and select the option to login automatically.

「このファイルを開く前に、まずWebサイトを開いて、自動でログインするオプションを選んでください」という意味だ。WebFetchはClaude Codeが自分でWebページを取りに行く機能で、公式ドキュメントに書かれている送信内容はUser-Agent(Claude-Userで始まる)とAcceptのヘッダーだけ。ブラウザーでサインインしているCookieを付けて取りに行く機能ではないので、会社のSharePointでは上のように追い返される。これが「WebFetchでは開けない」の正体だ。

WebDAVは、人が得たサインイン情報(Cookie)を使ってつなぐ

WebDAVの形のパスは、WindowsのWebClientサービスがSharePointとのやりとりを受け持ち、エクスプローラーやほかのアプリからは普通のフォルダのように見える。このときの認証について、Microsoftのドキュメントには次のことが書かれている。

  • WebClientサービスはサインインのページを表示できないので、サインインしたときに作られる認証用のCookieを使う。そのCookieは、期限付きで保存される「永続的なCookie」でなければならない
  • SharePoint Onlineの認証に使うCookieは「rtFa」と「FedAuth」。Microsoft Edgeの「エクスプローラーで表示」機能も、この2つのCookieをWebDAVの認証に使う設定になっている
  • WebClientサービスは、Windowsのインターネット機能(WinInet)のキャッシュから、使えるCookieを探して使う
  • SharePoint Onlineをネットワークドライブとして使う場合、Cookieはいずれ期限切れになるので、ときどきサイトに接続して「サインインしたままにする」を選び直す必要がある

つまり流れはこうなる。人がエクスプローラーでWebDAVのパスを開いてサインインを済ませると、認証用のCookieがWindowsに保存される。Claude Codeは同じPCの同じユーザーで動いているので、Claude Codeが同じパスのファイルを読むと、WebClientサービスがそのCookieを使ってSharePointにつなぐ。Claude Code自身はサインインの画面を出したり、パスワードを入力したりできないので、最初のサインインだけは人がやる必要がある、というわけだ。

注意点

  • 会社のルールを確認する:SharePointの中身をClaude Codeに読ませることは、社内の情報をAIに渡すことになる。会社で決められたAIの使い方の範囲で使う
  • WebClient(WebDAV)サービスは「非推奨」:Microsoftは2023年11月に、WebClient(WebDAV)サービスを非推奨の機能として発表している。今も使えるが、新しい開発は止まっていて、将来のWindowsで削除される可能性がある
  • 書き込み・削除に気をつける:上に書いたとおり、WebDAVの形で開くとファイルの変更もできてしまう。読ませるだけのつもりなら、CLAUDE.mdにも頼むときにも「読むだけ」と書く

まとめ

  • Claude CodeにSharePointのhttpsリンクを渡すと、「WebFetchでもMCPでも開けない」と言われた
  • 「\\会社名.sharepoint.com@SSL\DavWWWRoot\…」のWebDAVの形に書き換え、人がエクスプローラーで開いて認証情報(Cookie)を得てからClaude Codeに渡したら読めた
  • httpsのリンクが開けないのは、WebFetchがサインイン情報を持たずに取りに行き、SharePointに401で追い返されるから。WebDAVはWindowsに保存されたサインイン情報を使うので読める
  • サインイン情報には期限があるので、急に読めなくなったらもう一度エクスプローラーで開く
  • 書き換えは「https://→\\」「@SSL\DavWWWRoot を付ける」「/→\」「%20などを元に戻す」の4つ
  • CLAUDE.mdに読み替えルールを書くと、httpsのリンクを貼るだけで自動でWebDAVの形にして読んでくれるようになった
  • CLAUDE.mdには「読むだけで、作成・変更・削除はしない」も書いておく

参考

確認環境:会社のWindows PCのClaude Code、会社のSharePoint Online。変換用のPowerShellは自宅のPCのWindows PowerShell 5.1で動作を確認した。

コメント

タイトルとURLをコピーしました