(続)SharePointのライブラリのファイルのパスを取得してみた

以前の記事にも書きましたが、SharePointでは様々な形でパスが取得できます。
https://muc365.com/2018/10/27/SharePointのライブラリのファイルのパスを取得してみた

その際には標準機能の範囲内でどんなパスが取得できるのか、を中心で記事にしました。今回は多少のカスタマイズを含め、綺麗にパスを伝える方法を2パターン検討してみました。

①SharePoint DesignerでURLを生成
②ドキュメントIDを利用

SharePoint DesignerでURLを生成

まずはSharePoint DesignerのワークフローでURLを生成する方法です。処理はいたってシンプル、なぜならワークフローであれば「エンコードされた絶対URL」という値を持っているから。

(追記)
執筆時点で「エンコード = 日本語」って思い込んでますが、日本語で表示されるのは本来デコードされた状態です。すみません。

エンコードされた絶対URL

適当な名前で複数行テキスト列 (1行テキストのMAXは255文字なので複数行テキストの方が安全) を作成し、「エンコードされた絶対URL」を設定するだけ。

作成した複数行テキスト列に値を設定
ワークフローの最終形

するとドキュメント毎にエンコードされた絶対URLが記載された列ができます。

モダンUIでは一覧でコピーが出来ないようなので、プロパティからコピーしましょう。クラシックなら一覧からでも大丈夫です。

画面からではこの列を用意してくれないあたりがSharePointのいやらしいところですよねー。

ドキュメントIDを利用

これは綺麗なURLを取得する、という目的とは逸脱するのですが、ドキュメントIDだけでパスをやり取りすると素敵な未来が待っているのではないかという意味で紹介させていただきます。

SharePointにおけるドキュメントIDとは、サイトコレクションの各ドキュメントに一意のIDを割り当てる機能です。つまり、IDさえ伝えてしまえば相手はドキュメントの場所を特定できるのです。実はすごく便利です。

ドキュメントID機能を利用するには「サイトコレクションの機能」で「Document ID Service」がアクティブである必要があります。

Document ID Service

すると各ライブラリで「ドキュメントID」という列が出現し、各ドキュメントに固有のIDが割り当てられていることがわかります。(アクティブ化直後から少し時間がかかると思いますので気長におまちください)

ドキュメントIDが出現(フォルダはつかない)

ではこのドキュメントIDを相手に伝えれば良いかと、そうは行かないのです。ここから一工夫が必要。

まず、クラシックの場合「ドキュメント IDによる検索」というWebパーツがあるため、このWebパーツ経由でファイルを開くことができます。

ドキュメントIDによる検索

このWebパーツの動きは

https://<サイトURL>/_layouts/15/DocIdRedir.aspx?ID=

にドキュメントIDを付与して開くだけの動きのようです。

ただこれ
・ファイルが直接開いてしまう
・Webパーツが貼られたページからしか利用できない
・モダンUIでは存在しない
など使い勝手が良くありません。(見た目もダサい・・・)

では検索から!と検索してみてもIDだけではHITしません。(SharePoint Onlineのみ確認)

IDだけではヒットしない

検索時に「DlcDocId:」を付与しないとヒットしないのです。 (SharePoint Onlineのみ確認)

検索から探せることの良い点として、
・どのページからでも検索できる
・ファイルが置いてあるライブラリの表示が可能
・モダンUIでも利用できる

モダンの検索結果画面(サイト名の選択でライブラリが開きます)

このままでもコピーしたドキュメントIDに「DlcDocId:」を書いて伝えれば (もしくは相手側で追加して検索すれば) 良いのですが、そんなのは面倒。

集計列を作りましょう。

="DlcDocId:"&[ドキュメント ID 値]
集計列を追加
完成!!

あとはこれをコピーして・・・で、最後の最後にごめんなさい。モダンUIで集計値列どうやってコピーすれば良いんですか?(泣)

一覧だとドキュメントの移動になるしプロパティには出てこないし・・・

集計列の値を選択できない・・・

ま、まあクラシックならコピーできますから!!最悪、開発者ツール(F12)使ってください!!

ドキュメントIDの何が良いかって、上に書いた使いやすさもありますが参考資料とか成果物の一覧として記載しやすいんですよね。

みたいな?超適当ですみません。

同じサイトコレクションで作業するのが自明であるメンバ同士であればIDを伝えれば十分ですし、文中にIDを挿入してもそれほど邪魔になりません。

ちなみにドキュメントIDの先頭文字列はトップレベルサイトの設定画面の「ドキュメント IDの設定」から任意の文字列を設定可能です。

トップレベルサイトのサイトの設定画面
任意の文字列を指定可能

どうでしょうか。参考になれば幸いです。