Microsoft Flow でアイテムの権限を変更する

こんにちは、MS開発部の 荒井 です。

前に Flow を見た際に、Flow が出た当初からすると様々なことができるようになっていることに驚きまして…。
この間弊社営業も、「Outlook と Google カレンダー の同期ができて便利!」と言っていました。このあたりが簡単にできるのはやはり長所ですね。
ただそんな Flow ですが、範囲を SharePoint に限るのであれば、今まで SharePoint Designer で作成していたワークフローとは使い勝手が違うのが現実。
そんな、「Flow でやりたいけどアクションが用意されてないよ!」ということの1つが 権限の設定 関連でしょうか。
今回はこれをやってみようと思います。

概要

アイテムの権限設定で最初に思いついたのが、「投稿者や管理者以外はアイテムを編集できないようにしたい」というものでした。
これを実現するには「投稿者以外の投稿権限を閲覧権限に変更する」ことが必要になります。
実際に作成した Flow を使った際のビフォーアフターがこちら↓

これが、

こうなるといった感じですね。

方法

今回使用するのは「SharePoint に HTTP 要求を送信する」アクションです。
はっきり言ってしまえば、REST を使ってゴリゴリやるということですね。
それでは全体図を見てみましょう。

はい、2010形式のワークフローであれば代理ステップ内の1アクションで済んでいたものですが、こんなになっちゃいました。
箇条書きにすると以下のようになります。

  • 【When a new item is created】リストにアイテムが登録された時に開始
  • 【変数の初期化】リストタイトルを設定(REST で使用)
  • 【SharePoint に HTTP 要求を送信する】アイテムの権限継承を停止
  • 【SharePoint に HTTP 要求を送信する】アイテムの権限を取得
  • 【JSONの解析】アイテムに権限をもったグループ・ユーザーを取り出し
  • 【Apply to each】グループ・ユーザーの数だけ繰り返し処理
    • 【JSONの解析】グループ・ユーザーの持つ権限を取り出し
    • 【Apply to each】グループ・ユーザーの持つ権限の数だけ繰り返し処理
      • 【条件】権限が投稿権限かどうか判定
        投稿権限の場合・・・
        • 【SharePoint に HTTP 要求を送信する】投稿権限を削除
        • 【SharePoint に HTTP 要求を送信する】閲覧権限を付与
  • 【SharePoint に HTTP 要求を送信する】投稿者のIDを取得
  • 【JSONの解析】投稿者のIDを取り出し
  • 【SharePoint に HTTP 要求を送信する】アイテムの投稿者に投稿権限を付与

といった感じです。
まぁ興味本位で作ってみたものなので、見た目の割にはやってることはシンプルかなと。
トリガーの【When a new item is created】で、登録されたリストのタイトルなりGUIDなりが取得できれば便利なのですが…。
一応【変数の初期化】など使って取り回しはよくしているつもりです。

さて、本当はもう少し詳しく見ていこうと思ったのですが、長くなりそうなので次回以降にしようかと思います。
その間に Flow の更新がきて、権限設定が簡単にできるようになったら…なかったことにします笑。

その他弊社の業務にご興味のある方は、お気軽にお問い合わせください。
(お問い合わせはこちらのページをご確認の上、メールアドレス「info@deepcom.co.jp」までご連絡ください。)

コメントは利用できません。