SharePointOnlineやOneDrive for BusinessではMarkdown記法で書いた拡張子mdのファイルをアップロードしブラウザで開くとHTMLで整形されたものが表示されます。
このmdファイルに書く他のmdファイルへのリンクをいかに簡潔に書くか、というのが今回の目的です。
結論としては、OneDrive for Businessであれば?parent=.&id=
を固定部とし、その後にファイルパスを書く書き方になります。
SharePointOnlineではidにフルパスを指定しないと表示されませんでした。
* [index](?parent=.&id=Markdown/index.md)
* [page1](?parent=.&id=Markdown/folder1/page1.md)
* [page2](?parent=.&id=Markdown/folder1/page2.md)
* [page3](?parent=.&id=Markdown/folder1/folder2/page3.md)
以下のルールで書きます。
- クエリ文字列だけを書きます。
- parentは省略不可ですが値は何でもよいので「.」あたりを指定します。ファイルのパスがわかりやすいよう前側に書いたほうがよいです。parentを省略するとフォルダとみなされたような表示になります。
- カレントは常にドキュメントのトップなので、どの階層のmdファイルからでもidはトップからのパスで書きます。
上記の例は以下のフォルダ構成の場合の例です。
Markdown
│ index.md
│
└─folder1
│ page1.md
│ page2.md
│
└─folder2
page3.md
mdファイル内のリンクをクリックしても開かいない問題
mdファイル内のリンクは、どうやらmdを表示しているiframeでブロッキングしているようでクリックしても開きません。
なので、CtrlキーかShiftキーを押しながらクリックして、別タブ/別ウィンドウで開くようにします。
思い至った経緯
Markdownで書けるので、あとはリンクさえ簡潔に書ければと思い至ったわけです。
ただ、SharePointOnlineやOneDrive for Businessの各ファイルのリンクは絶対パスでとても長く、またmdファイル内で相互リンクすることを想定した実装になっていません。
いろいろ試行錯誤した結果、以下をクエリ文字列として書くのが最小セットと思われます。(2022年10月時点)
- 「id=<ドキュメントのトップからのパス>」でmdファイルを指定
- 「parent=<任意>」は必須
- その他のパラメタは不要