MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

【Tips】即時実行型のフローで実行者のメールアドレスを取得する

小ネタです。

SharePointのリストでアイテムを選択して実行するようなフローや、Excel for businessのテーブルの選択行に対して実行するようなフロー、またボタンを押して実行するフローなどの即時実行型のフローで実行者(自分)のメールアドレスを取得する方法の紹介です。

『動的コンテンツに表示されるんだからそれ使えばいいのでは?』と思われるかもしれませんが、実際に実行してみると残念ながらbase64エンコードされた値になります。

でもほしいのはデコードされた(人間に読める)メールアドレスなので、これを戻したい。

解決方法の1つは、Power Automateの関数 "decodeBase64()" を使ってデコードすることです。

これをすれば問題なく通常よく使うメールアドレス(普通の文字列)が取れます。

解決策のもう1つは直接メールアドレスが入ってる要素にアクセスする方法です。

数式バーで "User email" の動的コンテンツを選択すると、その正体は triggerOutputs()?['headers']?['x-ms-user-email-encoded'] であることがわかります。

"email-encoded" とついているくらいなので、エンコードされていないemailもあるだろう!とheaders を見てみると

ありました。その場合のキーは x-ms-user-email (-encoded なし)であることがわかります。

ということで解決策の2こめは triggerOutputs()?['headers']?['x-ms-user-email'] を指定することです!

『そんな長いの間違いなく打てる気がしないよ~』と思われるかもしれませんが、大丈夫。数式バーでUser emailを選択して、"-encoded" 部分を消せば期待する要素を取得できます。

これでフロー実行者のメールアドレスをフローの中で利用できるようになりました。

例えば選択したアイテムについて、他の人にリマインダーを送りつつ、自分をCCに入れるみたいな使い方ができるかなと思います。

即時実行系のフローで実行者のメールアドレスをべた書きではなく、動的に取得したいと思った場合には参考にしてみてください