以前の記事にも書きましたが、SharePointでは様々な形でパスが取得できます。
https://muc365.com/2018/10/27/SharePointのライブラリのファイルのパスを取得してみた
その際には標準機能の範囲内でどんなパスが取得できるのか、を中心で記事にしました。今回は多少のカスタマイズを含め、綺麗にパスを伝える方法を2パターン検討してみました。
①SharePoint DesignerでURLを生成
②ドキュメントIDを利用
SharePoint DesignerでURLを生成
まずはSharePoint DesignerのワークフローでURLを生成する方法です。処理はいたってシンプル、なぜならワークフローであれば「エンコードされた絶対URL」という値を持っているから。
(追記)
執筆時点で「エンコード = 日本語」って思い込んでますが、日本語で表示されるのは本来デコードされた状態です。すみません。
適当な名前で複数行テキスト列 (1行テキストのMAXは255文字なので複数行テキストの方が安全) を作成し、「エンコードされた絶対URL」を設定するだけ。
するとドキュメント毎にエンコードされた絶対URLが記載された列ができます。
モダンUIでは一覧でコピーが出来ないようなので、プロパティからコピーしましょう。クラシックなら一覧からでも大丈夫です。
画面からではこの列を用意してくれないあたりがSharePointのいやらしいところですよねー。
ドキュメントIDを利用
これは綺麗なURLを取得する、という目的とは逸脱するのですが、ドキュメントIDだけでパスをやり取りすると素敵な未来が待っているのではないかという意味で紹介させていただきます。
SharePointにおけるドキュメントIDとは、サイトコレクションの各ドキュメントに一意のIDを割り当てる機能です。つまり、IDさえ伝えてしまえば相手はドキュメントの場所を特定できるのです。実はすごく便利です。
ドキュメントID機能を利用するには「サイトコレクションの機能」で「Document ID Service」がアクティブである必要があります。
すると各ライブラリで「ドキュメントID」という列が出現し、各ドキュメントに固有のIDが割り当てられていることがわかります。(アクティブ化直後から少し時間がかかると思いますので気長におまちください)
ではこのドキュメントIDを相手に伝えれば良いかと、そうは行かないのです。ここから一工夫が必要。
まず、クラシックの場合「ドキュメント IDによる検索」というWebパーツがあるため、このWebパーツ経由でファイルを開くことができます。
このWebパーツの動きは
https://<サイトURL>/_layouts/15/DocIdRedir.aspx?ID=
にドキュメントIDを付与して開くだけの動きのようです。
ただこれ
・ファイルが直接開いてしまう
・Webパーツが貼られたページからしか利用できない
・モダンUIでは存在しない
など使い勝手が良くありません。(見た目もダサい・・・)
では検索から!と検索してみてもIDだけではHITしません。(SharePoint Onlineのみ確認)
検索時に「DlcDocId:」を付与しないとヒットしないのです。 (SharePoint Onlineのみ確認)
検索から探せることの良い点として、
・どのページからでも検索できる
・ファイルが置いてあるライブラリの表示が可能
・モダンUIでも利用できる
このままでもコピーしたドキュメントIDに「DlcDocId:」を書いて伝えれば (もしくは相手側で追加して検索すれば) 良いのですが、そんなのは面倒。
集計列を作りましょう。
="DlcDocId:"&[ドキュメント ID 値]
あとはこれをコピーして・・・で、最後の最後にごめんなさい。モダンUIで集計値列どうやってコピーすれば良いんですか?(泣)
一覧だとドキュメントの移動になるしプロパティには出てこないし・・・
ま、まあクラシックならコピーできますから!!最悪、開発者ツール(F12)使ってください!!
ドキュメントIDの何が良いかって、上に書いた使いやすさもありますが参考資料とか成果物の一覧として記載しやすいんですよね。
同じサイトコレクションで作業するのが自明であるメンバ同士であればIDを伝えれば十分ですし、文中にIDを挿入してもそれほど邪魔になりません。
ちなみにドキュメントIDの先頭文字列はトップレベルサイトの設定画面の「ドキュメント IDの設定」から任意の文字列を設定可能です。
どうでしょうか。参考になれば幸いです。