Power Automate で稟議書を実装してみた6 (Power Automate 編4)

## 経緯

[前回](https://qiita.com/miyamiya/items/3b60c57653e20a7a6ff0) は、承認処理を行い、承認された時には次の承認経路に移る処理まで説明しました
今回は承認処理を抜けた後の処理を説明します

説明する処理は下図となります
[![](https://1bed.allright.life/wp-content/uploads/2020/05/2020-05-06_19h04_20-300x185.png)](https://1bed.allright.life/wp-content/uploads/2020/05/2020-05-06_19h04_20.png)

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

これまでと同様に、最新のアイテムを取得します
[![](https://1bed.allright.life/wp-content/uploads/2020/05/2020-05-06_19h07_07-300x121.png)](https://1bed.allright.life/wp-content/uploads/2020/05/2020-05-06_19h07_07.png)

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

承認経路をループしている **Do until** で、実行期間を 7 日間としました
その期間を越えて抜けてしまうと終了フラグが立ってない状態で抜けてしまうので、それで判定をしています (完璧じゃないですが...)

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

**コントロールコネクタの「条件」**を使います
[![](https://1bed.allright.life/wp-content/uploads/2020/05/2020-05-06_19h11_20-300x96.png)](https://1bed.allright.life/wp-content/uploads/2020/05/2020-05-06_19h11_20.png)
終了フラグ変数が `true` かどうかを判定しています

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

**変数コネクタの「変数の設定」**を使います
[![](https://1bed.allright.life/wp-content/uploads/2020/05/2020-05-06_19h15_57-300x142.png)](https://1bed.allright.life/wp-content/uploads/2020/05/2020-05-06_19h15_57.png)
はいの時、登録用データにログと最後の更新されたステータスを保持します

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

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

いいえの時は、タイムアウトした旨の文言と、ステータスが Failure の文言を保持します
[![](https://1bed.allright.life/wp-content/uploads/2020/05/2020-05-06_19h17_16-300x202.png)](https://1bed.allright.life/wp-content/uploads/2020/05/2020-05-06_19h17_16.png)

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

### ログを変数に設定

最新のアイテムから取得したログを、生成したログの後ろに付けます
[![](https://1bed.allright.life/wp-content/uploads/2020/05/2020-05-06_19h20_33-300x82.png)](https://1bed.allright.life/wp-content/uploads/2020/05/2020-05-06_19h20_33.png)

### 終了フラグを true にします

処理が終了した旨判るように終了フラグに true をセットします
[![](https://1bed.allright.life/wp-content/uploads/2020/05/2020-05-06_19h22_19-300x70.png)](https://1bed.allright.life/wp-content/uploads/2020/05/2020-05-06_19h22_19.png)

### 終了ログに書き込む

最後にログとステータスを更新します
[![](https://1bed.allright.life/wp-content/uploads/2020/05/2020-05-06_19h22_57-300x244.png)](https://1bed.allright.life/wp-content/uploads/2020/05/2020-05-06_19h22_57.png)

ボディは次のようになっています

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

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

## 考察

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

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

## 関連記事

自分のためのメモに近い記事なのですが、長いのでインデックスつけます

* [Power Automate で稟議書を実装してみた1 (GUI で環境準備編)](https://qiita.com/miyamiya/items/2f8290fa4541cc3eb953)
* [Power Automate で稟議書を実装してみた2 (CUI で環境準備編)](https://qiita.com/miyamiya/items/9d28749ed9bdec8a6cee)
* [Power Automate で稟議書を実装してみた3 (Power Automate 編1)](https://qiita.com/miyamiya/items/35ca2d1cd05bc77396ce)
* [Power Automate で稟議書を実装してみた4 (Power Automate 編2)](https://qiita.com/miyamiya/items/1ef9cab407499a64477e)
* [Power Automate で稟議書を実装してみた5 (Power Automate 編3)](https://qiita.com/miyamiya/items/3b60c57653e20a7a6ff0)
* Power Automate で稟議書を実装してみた6 (Power Automate 編4)