LMS365 コネクターにより、Microsoft Power Automate フローで LMS365 データを使用できます。
各種トリガーを利用すれば、様々なデータを出力することができます。
しかしながら、LoginName パラメータを使った場合、フローの実行が成功したように見えても、失敗していることがあります。
ここでは、この動作を修正し、Power Automateフローで LoginName パラメータを適切に使用するための手順を説明します。
問題の解説
Azure Active Directory(AAD)で削除/無効化されたユーザーのデータを消去する簡単なフローを作成してみます。
トリガーをテストすると、このフローはうまく動作し、実行が成功したかのように見えます。
ですが、API経由でユーザーデータをチェックすると、データが何らかにより消去されていないことがわかります。フロー出力にもエラーが確認できます。
問題の解決
この動作の原因は、LoginName 出力のフォーマットが次のようになっているためです。
- i:0#.f|membership|ivanivanov@efisup.onmicrosoft.com
- i:0#.f|membership|ivanivanov_google.com#EXT#@efisup.onmicrosoft.com
どちらの場合も、エラーの原因は「#」記号です。したがって、フローが機能するようにこの記号を取り除く必要があります。これを行うにはいくつかの方法があります。
1.手動で記号「#」を「%23」に置き換えます。
この方法は、ログイン名を手動でするフローに有効です。
2.変数を初期化し、compose アクションを使用して自動的に「#」を置き換えます。
使用できる関数は、encodeUriComponent (Power AutomateでのEncodeUri使用については、ここをクリック してください。)と replace の2つです。
以下では、手動でトリガーされるフローで encodeUriComponent 関数が使用されている例を示します。
このように、Composeアクションでは encodeUriComponent(variables('OriginalUserLogin')) 式が使用されています。
replace 関数の式は replace(variables('OriginalUserLogin'), '#', '%23') とします。
3.別の出力を使用します
自動化フローでは、特殊なシンボルを含まない別の出力を使用できます。
Purge アクションでは、DirectoryObjectId パラメータを使用できます。LoginName をこのパラメータに置き換えれば、フローは動作します。この場合、出力は以下のようになります。
Uri フィールドに「Users('@{items('Apply_to_each')?['DirectoryObjectId']}')/Purge」