1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

承認申請用のリストのアイテムにアクセス権を付与する

Last updated at Posted at 2024-02-27

Microsoft 365の活用ネタのまとめに戻る

個人情報が含まれていることもあるので、申請者/承認者と管理部門だけは編集権限を与えたい。また承認されたら変更されないように閲覧権限だけにしたい。

探してみると「アイテムまたはファイルの共有を停止します/アイテムまたはフォルダーへのアクセスを許可する」というアクションが使えそうだ。

Power Automate の SharePoint コネクタでは、リスト内の個々のリスト アイテムまたはドキュメント ライブラリ内のファイルのアクセス許可を管理するための次のアクションが提供されます。

  • アイテムまたはフォルダーへのアクセスを許可
  • ファイルまたはフォルダーの共有リンクを作成
  • アイテムの共有を停止

上記のすべてのアクションを使用すると、アイテムまたはファイルのアクセス許可をカスタマイズして、適切なユーザーがそのアイテムまたはファイルにアクセスできるようにします。 アクセス権を付与するか、共有を停止するには、そのリストまたはライブラリのリスト所有者である必要があります。 つまり、これらのアクションのフローでは、リスト所有者ユーザー アカウントを使用してリストまたはライブラリに接続する必要があります。

太字のところが気になる。まぁ、正直なところ今は具体的な設定がよく分からん。

気になることが... キャパシティ プランってどうするんだろう?

なお、前提として SharePoint の制限 には、リストまたはライブラリ内のアイテムに対する固有の権限は 5,000 までと指定されております。そのため、固有のアクセス権を割り当てる運用を実施する場合、リストまたはライブラリ内のアイテムが 5,000 を超えないようキャパシティ プランをお願いします。

試しに作って確認してみる

image.png

共有の停止は分かったけど、権限の付与は分からんパラメータがある。

受信者って!!
共有の招待を受信する受取人のコレクション は何よ。

image.png

共有対象のメールアドレスを指定します。

メールアドレスが複数ある場合は、一つずつメールアドレスを指定するか、";"で繋げます。

しかし、どうやって変数を作るのかな?

今回は部門の上長と本人には権限を付与したい。でも、メールアドレスの直打ちなんて本人はいいけど、上長が異動になった時にこの部分はすべて更新し直しか? 本当に使いにくい。

以下を見ると , で区切っているけど 配列とコレクションは違う?

【PowerAutomate】配列を作る方法

サイトの設定がない

こっちにはある

image.png

このサイトの所有者だけど、サイトの設定がサイトの情報に変わっている。何でだろう。

image.png

何故か、サイトの情報の下の方にリンクがある?

image.png

しかし、ユーザとグループの設定はない。嫌になる。

image.png

サイトのアクセス許可をクリックすると

image.png

高度なアクセス許可の設定か?

image.png

これか?

image.png

最終的なフロー

エラーにはならないのですが、私はこのSandboxサイトの所有者なので閲覧だけにしても変わらないですね。

image.png

同じ権限いなっている。?

image.png

image.png

あれぇ、もう一つグループを追加したハズだけど...

image.png

手動で追加したら表示されたということは、アクションからは設定できなかったということかな?

image.png

image.png

受信者にグループのアドレスを入れているけどエラーになる。上記のように001Editをハンドで追加した後にこの設定を走らせるとエラー。ということは権限の削除だけしたことになる。

image.png

エラーになって権限を追加できていないから、グループが2つに減ったみたい。ああああ、何を指定するんだろう。

image.png

null だからかな?

image.png

400error だな。意味が分からん。

image.png

私のメールアドレスを設定すると、成功した。

image.png

私自身はこのサイトの所有者なのでグループは増えないのかな?

image.png

しかし、手動で追加すると私が入っているし、共有したというメールも来ます。

image.png

もう一度処理すると私の設定が消えている。 どういうこと? フローは成功になっている。

image.png

今回は明示的に通知をオンにしたら、通知は来ましたね。

サイトの所有者でないユーザを追加したら、追加できた。
ということは、はやり機能しているということ?

image.png

グループの追加もできるかも

MSさんの場合は日本語で検索していても結構検索できるので日本語で検索していましたが、ダメですねぇ。
salesforceの場合は無条件に英語で検索しているので、ここでも英語で検索。

おおお、何と一発で見つかりますね。

HTTP requestを使えとあるなぁ。 日本語のページでは見つけられませんでしたし、グループの場合にはメールアドレスは意味がなかったのでね。日本のユーザはグループでアクセス権をつけることはしないんだろうか?ちょっと不思議です。

You can't replicate that easily in PA, there's no special action to assign permissions to SharePoint group. You'll have to use HTTP request for that:

では、設定してみます。

_api/lists/getByTitle('019住所変更届')/items(1)/roleassignments/addroleassignment(PrincipalId=17,roleDefId=1073741827)

PrincipalIdはグループのIdを使います。
image.png
image.png

おお、ちゃんと3つ目に追加したグループが登録されていますね。

image.png

部署をマスターとして使っているリストから選ぶようにしています。
ここにcanEditという列を作ってグループを登録させています。このメールアドレスを使っていたらずっと失敗でした。今回はHTTP requestでIdを設定すればいいと分かったのIdはどこにあるのだろうか?

image.png

列そのものを指定したらラベル名が入っているみたい。 Idでないな。

image.png

_api/lists/getByTitle('019住所変更届')/items(8)/roleassignments/addroleassignment(PrincipalId=001Edit,roleDefId=1073741827)

これは、Null

image.png

_api/lists/getByTitle('019住所変更届')/items(8)/roleassignments/addroleassignment(PrincipalId=,roleDefId=1073741827)

ここを参考にしてグループのIdを取得してみましょう。

いきなり400エラーです。またヘッダが違う?

image.png

何を設定しても400エラーから抜け出せないので、 _api/web/sitegroups(17)を使って他のルーチンは動くか調べたけど、Jsonの解析が全くだめだ。値を取得できませんね。

式のところに以下を入れてOKクリックしてやっと動いた。 アクション名にブランクがあったけど _ に置き換える必要がありますね。

body('グループ情報の取得_HTTP_要求')?['d']

式から入力するとえんじ色のアイコンになる(右)
しかしいったん保存して開くと緑色のアイコンになる(左)。意味が分からん

image.png

最終的にはグループが取得できれば、機能はするみたい。

image.png

書き換えたらなぜか動いた

シングルコーテーションが違う?

image.png

_api/web/sitegroups/getbyname('001Edit') <-- OK
_api/web/sitegroups/getbyname(‘001Edit’) <-- NG

ちがう、NGは実行結果をコピーして作ったような...

違いがよくわからないので、分かりやすい絵

image.png

最終的にはマスター代わりに使っているリストの項目にあるグループの上からグループIdを取得することができました。これでどうにかやりたかったことが進みそう。

image.png

400エラーの調査。正直全く分からん

デフォルトでは、XML データを返します。Json データ形式を取得したい場合は、これを使用します。

accept: application/json;odata=verbose

メタデータが不要な場合は、これを使用します。

accept: application/json;odata=nometadata


1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?