Power AutomateでSharePointリストのレコードにユーザー単位のアクセス件を与える

SharePointリストはなかなかクセが強いデータベースですが、Power Automateから行に対してユーザー単位でみてもよいレコード、見えないレコードを制御できましたので紹介します。

まず、適当なSharePointリストを作成しました。SPOリストにはあらかじめ用意されているけれど隠されているID列を表示しておきます。2レコードほどテスト用に追加しました。

このリストのURLを、別のユーザーのブラウザで開いても、アクセス権がないのでアクセス要求画面になって開けません。

そこで使うのが「アイテムまたはフォルダーへのアクセス権の付与」アクションです。IDにはアクセス権を与えるレコード番号。受信者にはアクセス権を与えるユーザーを入れておきます。

ポイントは「ロール」の部分です。ここでCan Editを選べば編集権を与え、Can Viewを選ぶと閲覧のみで編集を制限してユーザーに見せることができます。

クラウドフローを実行した後で、アクセス権を与えたアデルさんのブラウザで開いてみると、2レコードのうちID1だけが編集可能な状態で表示されるようになりました。

アクセス権をはく奪するには

いちど与えた編集権をはく奪するには、「アイテムまたはファイルの共有を停止します」アクションを使います。使い方はIDを指定するだけ。

ID1が表示されていたアデルさんのリストから表示が消えました。

リスト上の値を用いてアクセス権を制御する

リストに編集者という列を作って、ここでレコード編集権限を制御するようにしてみましょう。

編集可能ユーザーという列を作りました。列をつくるときに「name」で作ってあとで日本語の列名に編集しなおしています。

トリガーを「アイテムまたはファイルが修正されたとき」に変更して、自動実行するように修正しました。

「項目の取得」では、自動トリガーで得たレコードの「ID」をつかって、そのレコードの「編集可能ユーザー」列に入力されているメールアドレスを取得します。

条件では、その値が空の場合、つまり式で作った「null」値と一致する場合には終了。そうでない場合には「編集可能ユーザー」に対してアクセス権を与えています。

とてもシンプルなクラウドフローですが編集権を与える前に、そのレコードに対する共有をいちど聞いているので、「編集可能ユーザー」の値を消した場合には、ちゃんと誰からも編集できなくなっているのがポイントです。

ユーザーさんに、いろいろ情報を入力してほしいけれど、ほかのユーザーさんには入力させたくない場合や、いちど入力させたら権限を編集から閲覧だけに制限したりと、いろいろ応用が利きそうなテクニックですので紹介しました。

こちらもどうぞ

他にもいろいろなPower AutomateのTIPSのようなものを一覧にして紹介していますのでご活用ください。