DT Blog

クレスコDTのエンジニアが
IT基礎知識から最新トレンドまで、技術ノウハウを発信

catch-img

Power Automateを使ってSharePointリストアイテムの権限操作フローを作成する方法

こんにちは、クレスコ・デジタルテクノロジーズの田中です。現在入社4年目で、入社以来SharePoint Online(通称SPO)案件に従事しております。案件では、SharePointリストとPower Automateを使用しています。
今回は、Power AutomateでSharePointリストアイテムの権限を操作するフローの作成方法について紹介いたします。


■あわせて読まれている資料:
Microsoft SharePointサイト開発サービス

  Microsoft SharePointサイト開発サービス|株式会社クレスコ・デジタルテクノロジーズ クレスコ・デジタルテクノロジーズのMicrosoft SharePointサイト開発サービスをご紹介いたします。 株式会社クレスコ・デジタルテクノロジーズ


目次[非表示]

  1. 1.Power Automateとは
  2. 2.実践:Power Automateフロー作成
  3. 3.SharePoint側の事前準備
    1. 3.1.SharePointリスト作成
    2. 3.2.SharePointグループ作成
    3. 3.3.SharePointアイテム作成
  4. 4.フロー作成:機能作成前の準備
  5. 5.フロー作成:個人ユーザーかセキュリティグループを判定し権限を付与する機能
  6. 6.まとめ
  7. 7.引用元


Power Automateとは

Power Automateとは、繰り返し実施するタスクを自動化する、RPA・DPAツールです。
Power Automateの機能として、RPAツールであるデスクトップフロー、DPAツールであるクラウドフローを提供しています。

デスクトップフロー

RPA(ロボティック・プロセス・オートメーション)とは、パソコン上で行われる定期的な作業を自動化する技術です。
デスクトップフローの自動化対象はPC上の操作であり、ローカル環境で動作することが特徴です。
デスクトップフローは、ユーザーの画面操作を記録して自動的にフローを作成するため、プログラミングの知識がなくても簡単に利用することができます。
またドラッグ&ドロップで操作できるため、自動生成されたフローの設定変更などカスタマイズも容易です。

クラウドフロー

DPA(デジタル・プロセス・オートメーション)は、業務プロセスを自動化する技術です。
RPAと異なり、複数のシステムをまたぐ複雑な処理の自動化に適しています。
クラウドフローの自動化対象はクラウドサービスやWebアプリケーションであり、インターネット上で動作することが特徴です。
フローを自動生成することはできませんが、豊富なテンプレートが存在し、ドラッグ&ドロップで簡単にフローを作成できます。



実践:Power Automateフロー作成

Power AutomateでSharePointリストアイテムの権限を操作するクラウドフローを作成します。
複雑な設定が少ない設計のため、Power Automate初心者の方でも作成しやすいフローになっています。
手動での権限付与は誤操作を招きやすいため、Power Automateで自動化することによって人為的ミスの低減に繋がります。
 
今回作成するクラウドフローでは、各アイテムのユーザー列データが個人ユーザーかセキュリティグループかを判定することでし、アイテムの権限を付与します。
セキュリティグループは、SharePoint サイトなどの Microsoft 365 リソースへのアクセス権付与などに使用される機能で、Microsoft Entra IDを介して動的に管理でき、セキュリティグループ自体はメールアドレスを持たないという特徴があります。

フローの準備から実行まで、下記の流れで行います。

  1. SharePoint側の事前準備

    1-1.SharePointリスト作成
    1-2.SharePointグループ作成
    1-3.SharePointリストアイテム作成

  2. フロー作成:機能作成前の準備

  3. フロー作成:個人ユーザーかセキュリティグループを判定し権限を付与する機能 


SharePoint側の事前準備

SharePoint側の事前準備として、下記手順を実施します。

  1. SharePointリスト作成
  2. SharePointグループ作成
  3. SharePointアイテム作成

SharePointサイトやリストの詳しい説明については、他ブログをご確認いただけますと幸いです。
SharePoint Onlineのすすめ ~企業サイト風 拠点情報ページを作ってみた~(biz.cresco-dt.co.jp)

SharePointリスト作成

①SharePointサイトにアクセスし、画面左側の「サイトコンテンツ」を押下します



②「新規」のプルダウンを開き「リスト」を押下します


②「空白のリスト」を押下します

③「名前」欄にリストのURL上のディレクトリ名を入力し「作成」を押下します
ディレクトリ名は変更不可ですが、リストの表示名や説明、サイトナビゲーション表示可否は変更可能です

開発エピソード

リスト作成時の名称を日本語名で登録すると、URL上の名称がエンコードされた英数字に変換されます。
エンコードされた名称のリストが複数存在するリンクページを作成する際、都度ページからURLを取得しなければならず苦労しました。
この経験以降、プロジェクトチームの方針としてリスト作成時の命名は英数字で行うようになりました。
 
 
③「タイトル」→「列の設定」のプルダウンを開き「名前の変更」を押下します

④「名前」欄で列名を変更可能です
今回は特に使用しないため変更せず進めます
既存の項目であるため、英語名ではなく日本語名でも問題ございません

⑤「列の追加」を押下し、「ユーザー」を選択した状態で「次へ」を押下します

⑥「名前」欄に項目名を入力します
本項目は個人ユーザーまたはセキュリティグループを入力する項目にします
保存後、「名前」を日本語名に変更可能です


開発エピソード
日本語名で命名するとエンコードされた英数字に変換されるのは、列名も同様です。
フローを部品化する際、手打ちで動的なコンテンツを生成する必要があるため、エンコードされた列名だと取得に手間がかかり、可読性が下がることが分かりました。
この経験を踏まえ、列作成時の命名も英数字で行う方針になりました。

⑦「列の追加」を押下し「列の表示と非表示を切り替える」を押下します

⑧「ID」のチェックボックスを選択し、「^」やドラッグ&ドロップで列順序を先頭に変更します

⑨「ID」が表示されます
Power Automateフローでアイテム(レコード)を指定する際に使用します

SharePointグループ作成

※権限によって作成できない場合がございますので、管理者にご確認ください
 
①SharePointサイトにアクセス後、画面右側の歯車を押下し、「サイトのアクセス許可」を押下します

②「高度なアクセス許可の設定」を押下します

③「権限」タブを開き、「グループの作成」を押下します

④「名前」にSharePointグループ名を入力します
権限のチェックボックスは全て未選択の状態で「保存」を押下します
その他設定は任意で変更可能です

⑤ユーザーの追加や削除、設定の変更が可能です

SharePointアイテム作成

①3.1.で作成したリストにアクセスし、「新しいアイテムを追加」を押下します

②「タイトル」に適当な文字列を、「User」にセキュリティグループ名を入力し「保存」を押下します
※セキュリティグループの名称などについては管理者の方にお問い合わせください

③再びアイテムを作成し、「タイトル」に適当な文字列を、「User」に個人ユーザーアカウントを入力し「保存」を押下します
メールアドレスや氏名を入力することで、アカウントを検索可能です

SharePoint側の事前準備は以上です。


フロー作成:機能作成前の準備

Power Automateのクラウドフローを作成します。
今回は初心者向けの作りやすい設計になっています。
フローの部品化など応用が利く設計にするには、Power Automateの開発知識が必要です。
 
①Power Automateにアクセスし、「マイフロー」を押下します

②「新しいフロー」を開き「インスタント クラウド フロー」を押下します

「インスタント クラウド フロー」は、手動でフローを実行したい場合に適しています


③「フロー名」を入力し、「フローを手動でトリガーする」を選択した状態で「作成」を押下します

④「新しいデザイナー」をオフにした状態で作成を進めます
「手動でフローをトリガーします」など、四角の各パーツをアクションと呼びます

⑤「新しいステップ」を押下します

⑥「項目の取得」で検索し、SharePointの「項目の取得」を押下します

⑦SharePoint側の事前準備で作成したアイテムを指定することで、アイテムのデータを取得することができます

設定項目

画像

設定値

サイトのアドレス

赤枠

リストを作成したサイトの URL
https://<サブドメイン名>.sharepoint.com/sites
/<サイトコレクション名>

リスト名

青枠

DTBlog_test

ID

緑枠




⑧再びアクションを追加します
「アクセス」で検索し、SharePointの「アイテムまたはファイルの共有を停止します」を押下します


⑨⑦と同じアイテムを指定します
アイテムの権限を操作可能な状態に変更し、フルコントロール以外の権限を削除することができます

⑩この時点で「保存」を押下します
トリガーアクション1つのみでは保存できないため、アクションを1つ以上作成し保存します

機能作成前の準備は以上です。


フロー作成:個人ユーザーかセキュリティグループを判定し権限を付与する機能

個人ユーザーかセキュリティグループを判定し権限を付与する機能を作成します。
今回は閲覧権限を付与します。
 
個人ユーザーかセキュリティグループを判定する処理

①アクションを追加し「条件」を押下します

②テキストボックスをクリックすると、使用できるデータの候補が表示されます
「claims」で検索し、「User Claims」を押下します
「<ユーザー列名> Claims」は、ユーザーまたはグループか判定するための情報です

③条件を「次の値を含む」に変更し、右側のテキストボックスに直接「tenant」と入力します
ユーザーがセキュリティグループの場合、Claimsにtenantが含まれます


セキュリティグループに権限を付与する処理

①アクションを追加します
「http」で検索し、SharePointの「SharePoint に HTTP 要求を送信します」を押下します

②このアクションは、セキュリティグループに権限付与するために必要なユーザー情報を取得します
画像のように入力し、保存を実施します

設定項目

設定値

サイトのアドレス

リストを作成したサイトの URL
https://<サブドメイン名>.sharepoint.com/sites/<サイトコレクション名>

方法

POST

URI

_api/web/ensureuser
(‘「<ユーザー列名> Claims」’)


③別アクションで使用するデータを取得するため、一度実行します
画面右上の「テスト」を押下し「手動」を選択した状態で「テスト」を押下します



④「SharePoint に HTTP 要求を送信します」を開き、最下部の「body」を全範囲選択コピーします
画面右上の「編集」を押下し編集画面に戻ります



⑤アクションを追加します
「データ操作」で検索し「JSONの解析」を押下します


⑥「コンテンツ」に②で作成したアクションの「body」を選択します

「サンプルから生成」を押下しテキストボックスに先ほどコピーしたデータをペーストします
「完了」を押下すると「スキーマ」に反映されます

⑦①同様、「SharePoint に HTTP 要求を送信します」アクションを追加します
「プリンシパル Id」は⑥のアクションの「Id」を選択します
「Role ID」は閲覧権限である「1073741826」を入力します
他権限はSharePointのRole IDを調べることで取得可能です




設定項目

設定値

サイトのアドレス

リストを作成したサイトの URL
https://<サブドメイン名>.sharepoint.com/sites/<サイトコレクション名>

方法

POST

URI

_api/web/lists/getbytitle(‘<リスト名>’)/
items(<リストアイテム ID>)/
roleassignments/addroleassignment
(principalid=<プリンシパル Id>,
roledefid=< Role ID >)


個人ユーザーに権限を付与する処理

①「条件」アクションを追加し、個人ユーザーか判定する処理を作成します
個人ユーザーは、「<ユーザー列名> Claims」に「membership」を含むかで判断します​​​​​​​

②「SharePoint」で検索し「アイテムまたはフォルダーへのアクセス権の付与」を押下します

③「受信者」には「User Email」、「ロール」は「Can view」を選択します

完成

以上でフローの完成です。
画面右上「テスト」から、【セキュリティグループに権限を付与する処理】③と同じ手順で実行することができます。


まとめ

本記事ではPower AutomateでSharePointリストアイテムの権限を操作するフローの作成方法を紹介いたました。Microsoft365ライセンスを社用アカウントとしてお持ちであれば、開発初心者の方でも挑戦しやすい内容になっています。今回は画面操作によって起動するシンプルなフローを作成する内容でしたが、複雑な要件を満たすには、より高度な技術力を要します。
本記事をきっかけに、Power Automateの活用に興味を持った方が少しでもいらっしゃれば何よりです。
最後までお読みいただき、誠にありがとうございました。


■サービス資料一覧はこちら↓

  資料ダウンロード一覧|株式会社クレスコ・デジタルテクノロジーズ クレスコ・デジタルテクノロジーズのサービスに関する資料の一覧ページです。 株式会社クレスコ・デジタルテクノロジーズ



引用元

Power Automate に関する入門情報(learn.microsoft.com)
Microsoft Power Automate – Process Automation プラットフォーム | Microsoft
DPA vs RPA vs BPA: 自動化オプションの側面比較(sanka.io)         
Power Automate のフローで SharePoint リストアイテムの権限を操作してみる | idea.toString();
Microsoft 365 のグループの種類を比較する(learn.microsoft.com)

田中
田中
部署名:プロフェッショナルサービス1部

おすすめ資料はこちら

ソフトウェアテクノロジー

最先端のデジタル技術の豊富な知見に基づき最も効果的なソリューションを提供します。
クレスコ・デジタルテクノロジーズは、大手電機メーカー様との提携に基づく製造業のノウハウを背景に、2015年4月よりPLM事業を開始。2015年6月には、PLMパッケージであるAras Innovatorを提供している米国Aras社とシステムインテグレーションパートナー契約を締結し、数多くのAras Innovator案件に対応しています。

CONTACT

社内システムのお悩みを私たちだけで解決へと導きます

お役立ち資料は
こちらから

不明な点はお気軽に
お問い合わせください