Power Automateでフローを実行したユーザー名を取得する方法
2023-11-11
azblob://2023/11/10/eyecatch/2023-11-11-power-automate-get-flow-triggered-user-name-000.jpg

こんにちは、あおいです。
誕生日が近づくと同時に、免許更新の時期が到来。まぁ、自分ペーパーなんですけどね。



今回はPower Automateでフローを実行したユーザー名を取得する方法について紹介します。ただし、[フローを手動でトリガーする]や[Power Apps(V2)]などの「ボタンをクリックしたら」がトリガーのフローを前提としています。

以下の数式を指定するだけです。

base64ToString(triggerOutputs()['headers']['x-ms-user-name-encoded'])


decodeBase64を使用しても動作に差異は確認できませんでしたが、Microsoft公式リファレンスによるとdecodeBase64は非推奨らしいです。
式関数のリファレンス ガイド - base64ToString | Microsoft Learn




また、x-ms-user-name の値が "?? ??" となってしまう事象については、ヘッダーに利用できる文字データがASCIIコードであるために、日本語の文字が表示できず "?? ??" で表示されてしまうことが原因です。回避策は x-ms-user-name-encoded をデコードする以外に以下の方法があります。

トリガーの後に[ユーザー プロフィールの取得(V2)]アクションを追加することで、取得したユーザー名を動的コンテンツとして扱えるようになり、表示もひらがなや漢字などの状態で確認ができます。


[ユーザー プロフィールの取得(V2)]の "ユーザー(UPI)"には、動的コンテンツから "ユーザーの電子メール"を入力します。もしくは以下の数式を指定します。

triggerOutputs()['headers']['x-ms-user-email']


[ユーザー プロフィールの取得(V2)]にて取得した内容は、その後のアクションで動的コンテンツとして値を扱えるようになります。x-ms-user-name にあたる動的コンテンツは "表示名" になるため、後続のアクションにて "表示名" を選択することで、ユーザー名が "?? ??" にならず扱えるようになります。




今回はPower Automateでフローを実行したユーザー名を取得する方法について紹介させていただきました。メリットとして、Power Automate側でフローの実行ユーザーを自動取得できるので、わざわざPower AppsでUser関数やOffice 365 Users コネクタを使用して、取得したユーザー名をPower Automateに渡す必要はありません。本記事が少しでも読者の皆様のお役に立てれば幸いです。