ふらりのメモ書き

Microsoft 365 , Power Platform らへん

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

Power Automate Premium のライセンスがあると、デスクトップフローでクラウドフローのアクションが利用できるようになり、ちょいちょいURIエンコード・デコードが必要になったので、メモ書きです。

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

URIエンコード

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

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

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

**REGION URLエンコード
SET URL TO $'''https://www.microsoft.com/ja-jp/power-platform'''
Scripting.RunPowershellScript.RunPowershellScript Script: $'''#HttpUtilityクラス を有効化
Add-Type -AssemblyName System.Web
# System.Web.HttpUtility クラスを使用して URL をエンコードします
$encodedUrl = [System.Web.HttpUtility]::UrlEncode(\"%URL%\")
# 結果を表示します
$encodedUrl''' ScriptOutput=> PowershellOutput
Text.Trim Text: PowershellOutput TrimOption: Text.TrimOption.ToEnd TrimmedText=> TrimmedText
**ENDREGION

変数の設定

URIエンコードしたい文字列を変数に設定しています。 「https://www.microsoft.com/ja-jp/power-platform」のURLを変数に設定します。

Robin

SET URL TO $'''https://www.microsoft.com/ja-jp/power-platform'''

PowerShell スクリプトの実行

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

PowerShell スクリプト

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

Robin

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

テキストのトリミング

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

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

Robin

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

実行結果

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

Power Fx 版のデスクトップフロー

Power Fxを有効にしたデスクトップフローだともうちょっと簡単にできます。
デスクトップフロー作成時に「Power Fx が有効」のチェックを入れると、デスクトップフローでPower Fxが利用できます。

フローの内容

1行でできます!

変数の設定時に値に「=」をつけるのが従来のデスクトップフローと違う点ですが、Power Fx の関数が利用できるので関数が対応していれば、式で柔軟に対応できます。

Robin

SET URIEncode TO $fx'=EncodeUrl("https://www.microsoft.com/ja-jp/power-platform")'

実行結果

ちゃんとURIエンコードされています。

さいごに

Power Automate Premium のライセンスがあると、デスクトップフローからクラウドフローのアクションが利用できるようになります。
クラウドフローのアクションが利用できるようになりかなり利活用の幅が広がりますが、設定値としてURIエンコードの値が必要な場合があり、ちょいちょいURIエンコードしたい時があるので今回の方法を覚えておくとちょっと便利になります。

URI デコード

URIデコードしたい場合の記事も書きました。
flali.hatenablog.com