業務ハックLab

とある社内SEの備忘録的なものです。

【スポンサーリンク】

Power Automateの承認機能を検証

皆さんこんにちは!
業務ハックLabのよ~よんです。

本日はPower Automateを利用した承認機能について検証をしましたので記事にしていきたいと思います。

この前、アキラさん主催の情シス飲み会に参加した時に、試験機能であるカードデザイナー内で変数値を参照するところで躓いたんですよ。
その飲み会の中では解決しなかったのですがその日のうちにアキラさんが解決方法をブログで上げていました。

アキラさんのブログはこちら

hanakuso365.hatenablog.com

ちなみにその時検証していたので承認機能だったので僕も改めて検証をしてみました。
Power Automateで承認フローってあまり使ったことがなかったんですけど思ったより便利でした。

ってことで検証した結果を書いていきたいと思います。

Power Automateの承認機能の種類

Power Automateで承認フローを作成する際には承認コネクタを使うパターンとTeamsコネクタの「アダプティブ カードを Teams ユーザーに投稿して応答を待機」アクションを使って承認を行う2パターンがあります。(もっとあるかも?でも僕が知ってるのはこの2つ・・・)

ちなみに承認コネクタはこんなやつ。

f:id:yo-yon:20210406181007p:plain

このコネクタには

  • 開始して承認を待機
  • 承認を作成
  • 承認を待機

と3つのアクションがあります。
そしてTeamsコネクタの方はこんな感じのアクションです。

f:id:yo-yon:20210406181908p:plain

どちらも承認フローに使えるのですが使い分け方としては前者の承認コネクタは承認の証跡などを簡単に残したい場合、後者のTeamsコネクタのアクションの方は承認依頼時に投稿するカードを自分仕様にカスタマイズしたい場合に使います。
ちなみにこの前、変数値を入れ込むところで躓いたのは後者の方です。
では早速、同じ承認の流れを作ってどのような違いがあるのか見ていきましょう。

検証する承認の流れ

今回、承認を流す内容は下記のような感じ。

タイトル:備品購入申請
商品:Surface duo
個数:1個
価格:180,000
申請理由:欲しいから

「備品購入申請でSurface duoってありえないだろ!」というツッコミは受け付けません(笑)

本当だったらPower Appsで申請用アプリ作ったり、Formsで申請フォーム作ったりするのですが今回はあくまで検証なので変数に上記の項目を入れてフローを作ります。
こんな感じです。

変数名 内容
User 担当者のメールアドレス
Goods Surface duo
Qty 1
Price 180,000
Reason 欲しいから

承認コネクタ編

フローのコアとなる部分はこのようになってます。
承認コネクタの「承認を作成」アクションで承認依頼を投げる内容を作成。
その後、その内容をTeamsのチャットで承認者へ投稿。
「承認を待機」アクションで承認者のアクションを取る形になっています。

f:id:yo-yon:20210406201337p:plain

承認アクション完了後、は承認者の選択によって分岐となっています。

f:id:yo-yon:20210406202700p:plain

棄却の場合のみ承認者のコメントを拾うようにしており、最後のアダプティブカードを飛ばすアクションの中に下記の式を入れています。

items('Apply_to_each_2')?['comments']

では実際にどんな感じで飛んでいるかというとこんな感じ。

f:id:yo-yon:20210406203545p:plain

上はTeamsに届いたもの(Teamsに送るアクション入れてるので)で、Outlookにも同時に届きます。

f:id:yo-yon:20210406203740p:plain

どっちかの画面で承認なり、拒否なりをするともう片方の画面も処理済みになります。

f:id:yo-yon:20210406213810p:plain
f:id:yo-yon:20210406203957p:plain

ちなみに承認履歴はTeams上の承認アプリから確認が可能です。

f:id:yo-yon:20210406204245p:plain

証跡を残すにはこの機能があるととても便利ですよね。

f:id:yo-yon:20210406204442p:plain

ちなみに承認処理完了後はこんなAdaptive cardsが届くようになってます。

f:id:yo-yon:20210406204539p:plain

f:id:yo-yon:20210406204720p:plain

却下理由もちゃんと取得できています。

では次はTeamsコネクタの「アダプティブ カードを Teams ユーザーに投稿して応答を待機」アクションを使って承認をしてみましょう。

Teamsコネクタ
アダプティブ カードを Teams ユーザーに投稿して応答を待機」アクション編

フローのコア部分はここだけ。

f:id:yo-yon:20210406205234p:plain

アダプティブカードの編集」をクリックするとJSON形式で記述するのではなくUI上で直接アダプティブカードを作ることができます。
ちなみにこの機能は「試験的機能」なので挙動が少し安定していません。
使用するときは自己判断でお願いしますね。

f:id:yo-yon:20210406205402p:plain

ちなみにアクションの下記の部分で記述した物をアダプティブカードの編集画面で変数として使用できます。

f:id:yo-yon:20210406205621p:plain

詳しくはアキラさんのブログを確認して頂ければと思います!

hanakuso365.hatenablog.com

あとのフロー部分はほぼ変わりませんがこちらの方では却下理由を取得する方法としてTeamsの応答の内容を式を入れて取得しています。
こちらの式も最後のアダプティブカードを飛ばすアクションの中に入れてます。

outputs('Acard')?['body/data/remandreason']

実際に申請を飛ばすとこんな感じです。

f:id:yo-yon:20210406211020p:plain

こちらの方は自分である程度カスタマイズを加えられます。
例えば画像を入れたりも可能です。
またTeamsにしか申請が飛ばないのでOutlookの「未読」が増えないのもいいですね。

ここで承認、棄却を選択すると上記の画面が下記のような表示に変更されます。
ちなみに下記では「回答済み」と表記されてる部分がありますがこちらの文面も変更可能です。

f:id:yo-yon:20210406211236p:plain

ただこの承認フローの場合、証跡が自動的には残らないので、証跡を格納するDBか何かを用意した上で、履歴を残していくことをおすすめします。
どちらの方法も良い面、悪い面がありますがそこはお好みで使用してもらえればと思います。

番外編

ちなみに今回、もう一つこっそりと検証をしていました。
それはこちら!

f:id:yo-yon:20210406211824p:plain

比べてみていただけるとわかると思いますが、よ~く見てみるとそうです!
メールアドレスが表示されなくなったんです。
左側のアダプティブカードは新たに追加された「チャットやチャネルにアダプティブカードを投稿する」アクションで投稿したもの、右側は「独自のアダプティブカードをフローボットとしてユーザーに投稿する」アクションで投稿したものです。
細かい仕様ですが結構嬉しかったりします。
先日Microsoft MVPのHiroさんがブログで紹介されていたので今回の検証で使ってみました。
このアクションでは「投稿者」の部分でUserが投稿するのかFlow botが投稿するのかを選べるようになっています。
Hiroさんの記事はこちら

mofumofupower.hatenablog.com

だーっと書いてきましたがPower Automateの承認フローはアプリやSharePointなどと組み合わせると非常に汎用性の高いものになります。
皆さんも是非業務で使用してみてください。

それでは皆さん良い業務ハックライフを~

免責事項