※ 本記事はかーでぃ( @_0447222690292 )さんの記事に続く「Microsoft Power Automate Advent Calendar 2022」12日目の記事となります。
※ 本記事の内容はPower Automate for desktop(PAD)の無償ライセンス範囲内・Microsoft アカウントを対象としています。
PADで多くのフローを作成していると、作成したはずのフローがコンソールで表示されなくなる事象に遭遇することがたまにあります。
そういった場合の対処法がMicrosoft Power Automate Communityに書かれていたので紹介します。
フローがコンソールに表示されなくなる原因
Microsoft アカウントでPADを使用している場合、フローは下図のようにOneDrive上に保存されます。
1つのフローにつきファイルは2つあり、ファイル名が (GUID) のファイルには実際のフローが含まれ、ファイル名が (GUID).meta となっているファイルには、文字通りフロー名を含むメタデータが含まれています。それぞれのファイルはBase64形式でエンコードされているので、デコードすることで内容を確認できます。
各フローには、フローが更新される度に変更されるctagがOneDriveによって割り当てられ、metaファイルに保存されます。
フローを一覧表示(GET API実行)する際には実際のフローのctagとの比較が行われ、フローのctagがPADの外部で変更された場合にはmetaファイルが更新されないため、PAD側ではフローが破損したとみなされ、コンソールに表示されなくなります。
要するに、ctagを使ってフローを管理しているので、それが一致しない場合は破損扱いになって一覧に表示されなくなる、というわけですね。
状況再現
ではctagの値を意図的に変更し、コンソール上でフローが表示されなくなるのか、実際に確認してみましょう。
- 検証用に適当なフローを作成します。
- OneDriveのフォルダ(自分のファイル → アプリ → Power Automate Desktop For Windows)を確認すると、新しく2つのファイルが作成されています。ファイル名からはどのフローがどのファイルにあたるのかを知ることはできませんが、更新日時によってある程度特定できます。
- metaファイルをダウンロードしてテキストエディタで開くと、内容がBase64エンコードされていることが確認できます。
- 下記スクリプトを使ってBase64エンコードされたmetaファイルをデコードします(※Base64デコードさえできれば良いので、必ずしも下記スクリプトを使用する必要はありません)。
- デコードしたファイルは下図のようなJSON形式になっていて、projectCTagとしてctagが含まれていることが確認できます。
- コンソールにフローが表示されなくなる状況を再現するため、このprojectCTagの値をわざと変更して上書き保存します。
- 下記スクリプトを使ってファイルをBase64エンコードし、ファイル名を元のファイル名に戻します。
- エンコードしたファイルをOneDriveにアップし、元のファイルを上書きします。
- PADのコンソールを更新すると、作成したフローが表示されなくなっていることが確認できます。
- Fiddler Classic等のツールでコンソールの一覧更新時の動作をキャプチャーすると、API( https://graph.microsoft.com//v1.0/me/drive/special/approot/children )が実行され、レスポンスの中で元のctagが返ってきていることが確認できます。
- 手順6.で変更したctagの値を元に戻し、再エンコードしてアップし直すと、コンソールでちゃんと表示されることが確認できます。
以上のように、PADのコンソールでフローが表示されなくなった場合は、一覧表示時のAPIの動きをキャプチャーして、元のctagに戻すことで再表示されるようになります。
上記操作は下記スレッドの中でkostasc氏(Microsoftの中の人)が回答されたものです。
PADの仕組みが分かって大変参考になったのですが、一言感想を述べるのであれば、
誰がここまでやんねん!
って感じでしょうか。
これを一般的な復旧作業の流れとするのはさすがに面倒過ぎるように思います・・・。
個人的には、 (GUID).meta ファイルではなく (GUID) ファイルのpackageの値としてフロー本体(Base64エンコードされたZipファイル)が入っているので、そこから戻した方が早いのではないかと思うのですが、それはそれで面倒な作業です。
まあ、とりあえず、Microsoft アカウントでPADを使っていて、コンソール上でフローが表示されなくなった場合には、OneDrive上のフローファイルとmetaファイルを確認してみるのが良いのではないでしょうか。
今回の記事はこれで終了です。
Microsoft Power Automate Advent Calendar 2022、13日目は @sys_zero さんのご担当になります。
この記事へのコメントはありません。