###概要説明
SharePoint Online に保存されたドキュメントファイルを読み取り専用(プレビュー)で開くリンクを作成する方法です。
上記のリンクをクリックすると読み取り専用(プレビュー)で開くことができます。
複数のメンバーで共有しているドキュメントライブラリの場合、普通に開くと編集モードで開くので、他の人が、見るだけのつもりでも、意図せず編集してしまう場合があります。それを防ぐために、プレビュー(読み取り専用)で開くリンクです。
下図のように、メニューで「プレビュー」を選択すればいいのですが、うっかり普通に編集モードで開いてしまう人も多いので、リンクを作成してみました。(編集したい場合は、通常通りに開けば編集もできます)
###プレビュー(読み取り専用)リンクの作成方法
では、作成方法です。
まず、「列の追加」で、1行テキストを選択し、適当なフィールド名の列を追加します。
この例では、「PreviewLink」というフィールド名としました(フィールド名はなんでもOKです)
次に、「この列の書式設定」を開きます。
以下の JSON の書式設定を貼り付けて保存します。
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "a",
"txtContent": "[$FileLeafRef]",
"style": {
"font-size": "120%",
"text-decoration": "none"
},
"attributes": {
"target": "=if([$FSObjType]=='1','_self','_blank')",
"href": "=if([$FSObjType]=='1',[$FileRef],'AllItems.aspx?id='+[$FileRef]+'&parent='+substring([$FileRef],0,indexOf([$FileRef],[$FileLeafRef])-1))"
}
}
あとは、列の位置を適当に変更してください。
###解説
以下のようなリンクでドキュメントを開くとプレビューモードで開くことができます。
この例では
テナント: XXXXXXXXXX.sharepoint.com
サイト名: TeamsTest
ドキュメントライブラリ名: TestPreviewDoc
ファイル名: プレゼンテンション.pptx
の場合のリンクです。
https://XXXXXXXXXX.sharepoint.com/sites/TeamsTest/TestPreviewDoc/Forms/AllItems.aspx?id=/sites/TeamsTest/TestPreviewDoc/プレゼンテーション.pptx&parent=/sites/TeamsTest/TestPreviewDoc/
※2021/09/29 時点で動作確認したものです。今後、仕様変更により動作しなくなる場合がありますのでご了承ください。
このリンクを JSONの書式設定で強引に作成しています。
$FileDirRef の値が取得できればもっとスッキリ書けるのですが、取得できなかったので、かなり無理やりのコードです😅
一応、フォルダ下のファイルにも対応しています。
もっとスマートなコードが書ける方は教えてください。
idea.toString(); さんがすでに同様のことを、もっとスマートに実現されていました orz
ありがたく参考にして修正しました。idea.toString(); さんありがとうございます。
ただし、そのままでは、フォルダへの移動には対応していないので、対応するように改善を加えています。
JSON書式設定およびプレビュー表示については以下を参考ください。
https://docs.microsoft.com/ja-jp/sharepoint/dev/declarative-customization/column-formatting
https://qiita.com/Momomo_ai/items/58bf768fb83bddfbdca1
https://idea.tostring.jp/?p=5410
変更履歴
2021/10/02 idea.toString() さんのコードを参考にしてシンプルにしました
2021/09/30 フォルダをクリックした際にフォルダに移動するよう JSON書式設定 を修正しました