ふらりのメモ書き

Microsoft 365 , Power Platform らへん

【Power Automate】デスクトップフローでURIデコードする


前回、URIエンコードについて書いたので、今度はURIデコードをデスクトップフロー(Power Automate for desktop)でやってみます。

Power Automate for desktop クライアント のバージョン
バージョン: 2.53.180.25037

URIエンコードについては

前回の記事が参考になります。

flali.hatenablog.com

URI デコード

標準アクションでURIデコードするアクションがないので、 PowerShell スクリプトを利用してURIデコードします。

デスクトップフローとしてはこんな感じ。

コピペで貼れるようにRobinも記載しておきます。

**REGION URLデコード
SET URI TO $'''%'https%3a%2f%2fwww.microsoft.com%2fja-jp%2fpower-platform'%'''
Scripting.RunPowershellScript.RunPowershellScript Script: $'''#HttpUtilityクラス を有効化
Add-Type -AssemblyName System.Web
# System.Web.HttpUtility クラスを使用して URL をエンコードします
$decodeUrl = [System.Web.HttpUtility]::UrlDecode(\"%URI%\")
# 結果を表示します
Write-Output $decodeUrl''' ScriptOutput=> PowershellOutput
Text.Trim Text: PowershellOutput TrimOption: Text.TrimOption.ToEnd TrimmedText=> TrimmedText
**ENDREGION

変数の設定

URIエンコードされた文字列には「%」が含まれるため、変数に設定する際には頭に「%'」、おしりに「'%」と入力する必要がありますのでご注意ください。

https://www.microsoft.com/ja-jp/power-platform」のURLをエンコードした「https%3a%2f%2fwww.microsoft.com%2fja-jp%2fpower-platform」を変数に設定します。

Robin

SET URI TO $'''%'https%3a%2f%2fwww.microsoft.com%2fja-jp%2fpower-platform'%'''

参考

learn.microsoft.com

PowerShell スクリプトの実行

スクリプト内で、デスクトップフローの変数が利用できるので、先ほど作成した変数をPowerShell スクリプトの中に設定します

PowerShell スクリプト

#HttpUtilityクラス を有効化
Add-Type -AssemblyName System.Web
# System.Web.HttpUtility クラスを使用して URIデコードします
$decodeUrl = [System.Web.HttpUtility]::UrlDecode("%URI%")
# 結果を表示します
Write-Output $decodeUrl

Robin

Scripting.RunPowershellScript.RunPowershellScript Script: $'''#HttpUtilityクラス を有効化
Add-Type -AssemblyName System.Web
# System.Web.HttpUtility クラスを使用して URL をエンコードします
$decodeUrl = [System.Web.HttpUtility]::UrlDecode(\"%URI%\")
# 結果を表示します
Write-Output $decodeUrl''' ScriptOutput=> PowershellOutput
'

テキストのトリミング

PowerShell スクリプトの実行結果に改行が入るので、改行を削除します。

改行の削除にはテキストのトリミングを利用しています。
テキストのトリミングという名前のアクションは2つあるので注意が必要です。 トリミング対象で「末尾の空白文字」で改行を削除できます。

Robin

Text.Trim Text: PowershellOutput TrimOption: Text.TrimOption.ToEnd TrimmedText=> TrimmedText

実行結果

URIデコードされた値が取得できています。

さいごに

URIエンコード文字列をデコードしてみました。
Power Automate Premium のライセンスがあると使えるクラウドフロー系のアクションだと戻り値がURIエンコードされた値の時があるので、デコード方法を覚えておくと値の確認がしやすくなります。