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

経緯

前回の SharePoint と Power Automate で稟議書を実装してみたメモ 5 では、承認処理を行い、承認された時には次の承認経路に移る処理まで説明しました

今回は承認処理を抜けた後の処理を説明します

説明する処理は下図となります

承認処理が終了した時、登録されたアイテムの最新状態を取得

これまでと同様に、最新のアイテムを取得します

ループでタイムアウトしてしまってないか確認

承認経路をループしている Do until で、実行期間を 7 日間としました

その期間を越えて抜けてしまうと終了フラグが立ってない状態で抜けてしまうので、それで判定をしています (完璧じゃないですが...)

終了フラグが true の時はループが正常に終了している

コントロールコネクタの「条件」を使います

終了フラグ変数が true かどうかを判定しています

承認処理が正常終了時の文言を保持

変数コネクタの「変数の設定」を使います

はいの時、登録用データにログと最後の更新されたステータスを保持します

{
  "Log": "[@{convertFromUtc(utcNow(), 'Tokyo Standard Time', 'yyyy-MM-dd HH:mm:ss')}] 承認処理が終了しました",
  "Status": "@{body('承認処理が終了した時、登録されたアイテムの最新状態を取得')?['Status']}"
}

承認処理が正常終了しなかった時の文言を保持

いいえの時は、タイムアウトした旨の文言と、ステータスが Failure の文言を保持します

{
  "Log": "[@{convertFromUtc(utcNow(), 'Tokyo Standard Time', 'yyyy-MM-dd HH:mm:ss')}] 承認処理が期間内に終了しませんでした",
  "Status": "@{variables('ステータス用オブジェクト')['Failure']}"
}

ログを変数に設定

最新のアイテムから取得したログを、生成したログの後ろに付けます

終了フラグを true にします

処理が終了した旨判るように終了フラグに true をセットします

終了ログに書き込む

最後にログとステータスを更新します

ボディ

{
    '__metadata': {'type': 'SP.Data.ApplyListItem'},
    'Log': '@{variables('ログ')}',
    'Status': '@{variables('登録用データ')['Status']}'
}

以上ですべての処理は終了です

考察

トライ・アンド・エラーを繰り返しながら作っていったので、今見ると「あの時はこう設定しているのに、ここでは別のやり方してしまっている」とか、コネクタのネーミングがブレブレなどがあり、作り慣れてないなぁっと実感しています

本来なら Power Apps を使って画面も綺麗に作りたいところでしたが、ここまででお腹いっぱいになってしまいました... つかれた