Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@miu200521358

Power Apps + Power Automate + Sharepoint で管理者のみ更新可能なリストとアプリを作成する

要件

  • Sharepointリストでデータを管理したい
  • 一般ユーザーはAppsで提供したアプリ経由でのみ登録や更新をさせたい(リスト直操作を認めない)
  • 管理者はフルコントロールを有し、アイテムの操作を行う

解決案概要

  • Sharepoint リストのアイテムごとの権限で「作成/編集のアクセス権」を「なし」にする
  • Appsから実行者が呼び出せるAutomate(親フロー)と、管理者権限で更新操作を行うAutomate(子フロー)を用意し、二段階でフローを実行する

Sharepointリスト定義

ポイント

Sharepointリスト設定 > 詳細設定 > アイテムごとの権限 項目で、「作成/編集のアクセス権」を「なし」にする

image.png

手順

管理者ユーザー「Sharepointリスト設定 > このリストに対する権限 > フルコントロール」に登録する
一般ユーザーは「Sharepointリスト設定 > このリストに対する権限 > 閲覧者」に登録する

image.png

管理者から見ると、「新規」ボタンが表示されている

image.png

一般ユーザーから見ると「新規」ボタンが表示されていない

image.png

Automate

ポイント

  • 子の実行ユーザーを管理者(フルコントロールユーザー)に限定する
  • データの受け渡しはJSONで行う

手順

ソリューションの作成

Automateから別のAutomateを呼び出すには、ソリューションに含まれている必要がある
(普通のAutomateではアクションの選択肢に出てこない)

Automateの左メニューから、「ソリューション」を選択する

image.png

新しいソリューションを作成する

image.png

親フローの作成(途中まで)

ソリューションの中に入り、Appsから呼び出される用のAutomate(以下、親フロー)を作成する
※既存Automateをソリューションの中に含めることも可能

image.png

ソリューション内のAutomateは子フローを呼び出すことが可能になっている

image.png

親フローは子フローが出来てないと呼出も保存も出来ないので、一旦放置

子フローの作成

先に、ソリューション内に管理者権限で更新操作を行う用のAutomate(以下、子フロー)を作成する

image.png

データのやり取りは、Apps⇔Automate間も、Automate同士間も、JSON形式にしておくと楽。(いわゆる密結合)
例えば引数がひとつ増えた場合に、引数をバラバラに定義しておく(疎結合)と、呼び出し箇所の再定義が必要になるので何かと面倒。

Sharepointリストのユーザー欄はカスタム値でメールアドレスをそのまま指定する

image.png

子フローの詳細画面から、実行ユーザーを定義する

image.png

プルダウンで、実行ユーザーを選択する
(ここに出てくるユーザーは作成者か共同作成者の模様)

image.png

ダイアログは「OK」

image.png

実行ユーザーを変更すると「保存」ボタンが有効になるので、保存する。

親フローの作成(再開)

親フローは子フローを呼び出すのみ

image.png

子フローのテスト

まずは、子フローが正常に動くことを確認する

image.png

image.png

image.png

親フローのテスト

同じデータを親から流して正常に動くことを確認する

image.png

image.png

Apps

ポイント

  • Formは使わない(Appsを開いている実行ユーザーは更新権限がないため、Appsから直接リストは更新できない)
  • AutomateへのデータはJSON形式で渡す

手順

ソリューションからアプリを作成する(レイアウトはお好みで)

image.png

image.png

登録ボタンの「OnSelect」時Action

UpdateContext({data: JSON({Title: TextInput1.Text, Comment: TextInput2.Text, Worker: User().Email}, JSONFormat.IndentFour)});
SampleParentFlow01.Run(data);
Refresh(SampleList);

これで、Appsからは一般ユーザーでも更新が出来、Sharepointリスト直操作は管理者しか行えないソリューションが作成できました。

以上

2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
miu200521358
「手を抜く為の手間は惜しまない」がモットー。 MMD, 画像認識, ディープラーニング等。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?