LoginSignup
6
4
しくじりエンジニア!私みたいになるな!
Qiita Engineer Festa20242024年7月17日まで開催中!

「やーい、おまえんPower Automate、ごみやーしきー!」とマウントをとられないために

Posted at

既定の環境

Power Automateを始めたばかりだったり、非IT職から挑戦している方にとって、環境は中々考えが及ばない領域ではないでしょうか。
私自身、経験値が増えていくことに伴い、「あ、環境って気にしないとダメなんだ」と気が付いてから悲しくなりました。

環境を分ける理由としては

  • 本稼働へ変更に伴う影響を与えない安全性の確保
    • 既定で作成して公開をするサイクルだと、誤って変更に伴う影響が出てしまう
  • 作業環境の独立
    • 自由に作業できることで試行錯誤しやすい
  • リリース管理
    • 開発・テスト・本稼働とわけることで継続的なデリバリーや手プロ意を効率化
  • ユーザーへの影響を最小限に
    • テスト環境での十分な開発を経てからデプロイすることで、「あ、やってしまった」という事故を防ぐ

といったことが挙げられます。
Power Platform 環境の種類は複数あるので、資料に目を通しておくことを推奨します。

今まで、既定の環境でPower AutomatePower Appsを作ってきましたが、「そういうものではない」ということを知ってから悲しくなったことが記憶に新しいです。

ということで今回は大掃除をしていきたいと思います。今回はPower Automate 管理コネクタに焦点を当てて、現状の改善を進めていきたいと思います。

Power Automate 管理コネクタ

Power Automate 管理コネクタを使用すると、Power Automate 管理サービスとのやり取りが可能になります。 例: フローの作成、編集、および更新。

Power Automate Management (Microsoft Learn)

Power Automateの画面で見てみると「Power Automate 管理」という名前でヒットします。
このコネクタはプレミアムの対象ではないため、標準のライセンスでも利用可能です。

image.png

Power Automateの稼働状況、フローの詳細、所有者の状況といったあらゆる情報が見えます。

とりま現状をCSVに書き出してみる

ひとまず下記のシナリオで、「既定の環境」のPower Automate フローを一覧化してみます。

  1. フローを手動でトリガーする
  2. 自分のフローの一覧表示 既定の環境を選択
  3. CSV テーブルの作成
  4. OneDrive for Business - ファイルの作成

image.png

(1) 自分のフローの一覧表示
環境は自分の環境を選択

image.png

(2) CSV テーブルの作成
データ操作にてPower Automate 管理で取得した値を列挙します。

image.png

From - outputs('自分のフローの一覧表示')?['body/value']

Columnsで下記の項目のみ抽出します。

キー 設定値 名前 解説
name item()?['name'] フロー名 JSONからの呼び出しで使う内部名
displayName item()?['properties/displayName'] フローの表示名 日本語を含めた自由に設定できるフローの名前
id item()?['id'] コネクタ ID
status `item()?['properties/state'] フローの状態 オンやオフなどを調査
triggers item()?['properties']?['definitionSummary']?['triggers'][0]?['kind'] フロー トリガーの種類 ButtonPowerAppV2など
environment item()?['properties']?['environment']?['name'] 環境 この操作では一定の値を返す、フローID

(3) 結果をOneDrive for Businessに保存
ファイルの作成アクションで結果をCSVファイルとして削除します。
ファイル名はその場しのぎのものを設定しています。

image.png

ファイル コンテンツの設定は、日本語の文字化け対策に下記のように設定します。

ファイル コンテンツ
concat(decodeUriComponent('%EF%BB%BF'),body('CSV_テーブルの作成'))

悲惨な結果

中身は大変なことになっています💦

image.jpg

214個も作っている💦
これだけ既定の環境でやらかしてきたことがよくわかります。
その分だけいろいろ知見が積み上がってきたと前向きに捉えましょう。

稼働していないフローを削除する

さて、この中でstateStoppedになっているフローは現在稼働していないフローです。
使わないからオフにしよう、と安直に設定した結果ですね。

コチラを削除していこうかと思います。
コネクタにフローの削除が存在するため、活用します。

環境は先ほどと同様、Flowは、Power Automate 管理コネクタで取得したname属性です。
そのため、カスタム値の設定でitem()?['name']と指定することで、繰り返し処理が実行できます。

image.png

なんとなくバックアップはとりたい

削除となると二の足を踏んでしまうのが人間の性。
せめてこのフローが何だったのかは、把握しておきたいというニーズもあると思います。

ここで注目したいものが「自分のフローの一覧表示」のdefinitionSummaryです。

image.png

フローのトリガーとアクションが列挙されていることがわかります。
削除前にjson形式で保存しておくことにしましょう。

保存先はOneDrive for Businessにします。
ファイルの作成 アクション
ファイル名 - @{items('For_each')?['name']}.json
ファイル コンテンツ - @{item()?['properties']?['definitionSummary']}

image.png

こちらを実行するとOneDrive for Businessjsonファイルで中身が確認できます。

image.png

Visual Studio Codeで中身を見ることもできますね!

image.png

フロー削除の実行

削除を実行するフロー全体です。

  1. フローを手動でトリガーする
  2. 自分のフローの一覧表示 既定の環境を選択
  3. アレイのフィルター処理stateStoppedのみのフローに絞り込み
  4. 繰り返し処理
    1. OneDrive for Business - ファイルの作成 - 削除するフローのdefinitionSummary
    2. 削除の実行

image.png

45件削除しました。
まだまだ汚いですね。

使わないフローを可視化するために

大掃除計画、今回だけでは終わらない見込みです。
そもそも使っているフローかどうかの判別が必要になります。

さて、その判別をどう実現していくのか、それが次回の課題になりそうです。

ということで今回のブログはここまで!

読んでくださり、ありがとうございました!

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4