LoginNameパラメータを使用したフローを修正する

  • 更新

LMS365 コネクターにより、Microsoft Power Automate フローで LMS365 データを使用できます。

各種トリガーを利用すれば、様々なデータを出力することができます。

しかしながら、LoginName パラメータを使った場合、フローの実行が成功したように見えても、失敗していることがあります。

ここでは、この動作を修正し、Power Automateフローで LoginName パラメータを適切に使用するための手順を説明します。

問題の解説

Azure Active Directory(AAD)で削除/無効化されたユーザーのデータを消去する簡単なフローを作成してみます。

Fixing a flow1.png

トリガーをテストすると、このフローはうまく動作し、実行が成功したかのように見えます。

ですが、API経由でユーザーデータをチェックすると、データが何らかにより消去されていないことがわかります。フロー出力にもエラーが確認できます。

Fixing a flow2.jpg

問題の解決

この動作の原因は、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 関数が使用されている例を示します。

Fixing a flow3.jpg

このように、Composeアクションでは encodeUriComponent(variables('OriginalUserLogin')) 式が使用されています。
replace 関数の式は replace(variables('OriginalUserLogin'), '#', '%23') とします。

 

3.別の出力を使用します

自動化フローでは、特殊なシンボルを含まない別の出力を使用できます。

Purge アクションでは、DirectoryObjectId パラメータを使用できます。LoginName をこのパラメータに置き換えれば、フローは動作します。この場合、出力は以下のようになります。

Uri フィールドに「Users('@{items('Apply_to_each')?['DirectoryObjectId']}')/Purge

Fixing a flow4.png