SharePoint と Power Automate で稟議書を実装してみたメモ 3

2020/05/07

経緯

前回の SharePoint と Power Automate で稟議書を実装してみたメモ 2 では、CUI(PowerShell) を使って SharePoint 作ったサイトとリストの作成を行いました

今回から設定した Power Automate の説明に入っていきます

マスタリストの登録データ

マスタリストはこのようにデータを登録しています

グループマスタに、各グループに属するユーザーを登録しています

承認経路マスタには、承認経路に属するグループを設定し、必要な承認数を設定しています

作成したフロー概要

作成したフローは下記のようになりました (肝心な部分は閉じてますが)

実際に運用に乗せるフローだと、例外処理とか色々入れないといけないと思いますが、今回はワークフローを実感したいだけでしたのでこんな感じです

  1. 承認ワークフローリストにアイテムが登録されたら発火
  2. 変数の初期化を行い
  3. 作成されたアイテムに設定された承認ルートを取得
  4. 承認ルート分、承認処理を繰り返す
  5. 終了処理

今回はその中の 「2. 変数の初期化を行い」 について説明していきますが、その前に Power Automate を作る時に知っておきたい制限から書きます

Power Automate で知っておきたい制限

とりあえず公式は目を通して置いたほうが良いかもしれません

Power Automate における制限と構成

恐らくですが、少し複雑なことをやろうとすると、ここに引っかかると思います

  • ワークフローごとのアクションは 500 まで
  • 入れ子の深さ 8 まで

そのため、まとめられる処理はまとめたり、変数を複数持つのではなく、オブジェクトとして持つなどの工夫も必要だと感じました

続いては、作成したフローの変数の初期化の説明に入ります

変数の初期化について

変数の扱いは癖があり、見事に深みにハマってしまい何度もやり直しました
雑に言うと 文字列A = 文字列A + 文字列B とやろうとしたら「循環したらだめですよー」ってエラーがでました…
#実際はもうちょっと複雑ですが

それでは早速、下図部分の変数の初期化について説明に入っていきますが、すべて 変数コネクタの「変数を初期化する」 を使います

作成されたアイテムのアイテム ID を変数にセット

SharePoint では、データベースで言うところのレコードのことをアイテムと呼びます
その一意の値として使うアイテム ID はあとの処理でよく使うので、変数に格納しておきます

承認ルートのループカウンター変数を初期化

承認ルートをループで回すときのループカウンター変数を整数で、初期値 1 として定義します

ループ終了フラグを false で初期化

ループを強制的に抜けるための終了フラグをブール値で、初期値を false として定義します
false は式として設定しています。以後、true, false, null は全て式として設定しています

その他、内部処理で使う変数を定義します

Power Automate では、変数の定義は入れ子の中ではできないので、使用する変数は先に定義しておいた方が無難です

登録用データの初期化

登録用データは、条件文で値を変えて登録する処理を共通化させるために定義しています

動的列名用オブジェクトの初期化

動的列名用オブジェクトは、承認ルートの階層毎に変わる列名を保持させるためのものです

承認ルートを順序よく回している時、今確認すべき列名を格納します

ステータス用オブジェクトを定義

ステータスを直で文字列で入れると、変更に弱くなることと、typo でのバグが判りにくくなるので、オブジェクトに定義しています

次回予告

まずは、変数定義部分の説明でしたが、使用するところで意図か判るかと思います

次回からメインの処理に入って行きます