2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SharePointリストで疑似的に「投稿」のみの権限を作成する

Last updated at Posted at 2024-12-13

Microsoft 365 Advent Calendar 202413日目担当記事です!

はじめに

SharePointリストで、「投稿できるけど編集・削除はできない」といった権限の設定がやりたかったので、なんとか疑似的にでも再現できないか考えてみました。
具体的なシーンとしては、「社員からの申請を受け付けるが、申請内容を勝手に書き換えたり削除したりできないようにしたい」という内容です。

要件としては、以下の操作のみが実行できる仕組みを考えます。

操作 自分が投稿したアイテム 自分以外が投稿したアイテム
閲覧 ×
投稿 -
編集 × ×
削除 × ×

既存の設定

リストの権限として、サイトの「所有者」「メンバー」「閲覧者」の既定の権限ロールがせっていされています。
他にも、ユーザー自身の投稿したアイテム以外を非表示にしたり、編集・削除できないようにすることも可能です。

2024-12-08_13h16_09.png
2024-12-08_13h16_20.png
2024-12-08_13h16_47.png

ただし、これらの権限設定では「作成」と「編集」が1つの同じ設定になっているため、「作成(投稿)」はできるが「編集」できないという権限の設定はできません。

個別の権限設定でさらに細かく見ていった場合も、上記の要件を満たす権限設定はありませんでした。
image.png

結論として、「作成」と「編集」をそれぞれ制限する方法は見つかりませんでした。

※追記
カスタムのアスセス許可レベルを作れば「作成」と「編集」をわけて制限することができるようです!
アクセス許可レベルを作成し、編集する方法 - SharePoint in Microsoft 365

ただし、「作成(追加)」と「表示」を分けることはできないようでしたので、この記事は残しておくこととします。
image.png
ヨウセイさんありがとうございます!

疑似的な再現

どうやらできないことがわかったので、直接のアクセス権の設定ではなく疑似的に再現する方法を考えます。
今回考えた方法は、リストから直接フォームを作成できる機能です。

フォームを作成する

フォームはリストのメニューから作成します。
image.png

申請に必要な列のみを表示したフォームを作成します。
例えば「承認状態」など、管理用の列がある場合は非表示にしてフォームを作成できます。
image.png

必須フィールドを非表示にすることも可能で、必須フィールドを省いて投稿させることもできるようです。
image.png
image.png

フォームを利用できる対象

これで、既存の権限設定とは別に、「投稿」のみを行うことができる仕組みを用意することができました。
しかし、現時点では残念ながら、このフォームを使用できるユーザーを限定することはできません。

フォームにアクセスできるのは、同じ組織(テナント)のユーザーのみとはなってはいますが、特定のユーザーやグループに制限することがでいないため、このリンクを知っている同じ組織(テナント)のユーザーであれば、誰でも投稿できてしまいます。

image.png

「誰にでも投稿してもらっては困る」というリストではこの方法は使用できません。

私の目的では、社員全員が申請できるリストであったため、この問題は対処せずに使用しております。

フォームの設置場所

あとは動線の用意です。
リストのコマンドバーに直接ボタンを置きたいところですが、JSON定義でのカスタマイズを含めても実装は難しいようでした。
image.png

代わりに、フォームのリンクとリストを同じSharePointページに配置することで、それらしい動線を用意しておきました。
image.png

この方法では、ページに対するアクセス許可も考える必要があります。

最終結果

上記の仕様に問題がなければ、あとは実際に使用してもらうだけです。
下準備として、アクセス許可の付与からフォームの仕様に合わせて「外部ユーザー以外のすべてのユーザー」を閲覧権限で追加。
2024-12-09_00h03_58.png

アイテムごとの権限はどちらも「ユーザー本人」にしておきます。
2024-12-09_00h16_53.png

所有者と一般ユーザー(閲覧権限のみ)の画面を比べたのがこちらです。
フォームから投稿してもらった自身のアイテムは表示されますが、編集はできなくなりました!
image.png

おわりに

いろいろと考えて、無理やり実装はできましたが、やはり無理やり感は拭えない結果となってしまいました。
結論としては、行ごとの細かな権限設定ができるDataverseをオススメしたいところですね。

ただ、このフォームを使うと、リストそのものに対するアクセス権を無視して「投稿」ができるという点は、可能性を大きく広げるものでもあると思います。
今後、フォームに対するアクセス許可を細かく設定できるようになれば、さらにできることも広がっていくでしょう!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?