見出し画像

文字種を変換するPower Automate for desktopフロー

Power Automate for desktop(PAD)で半角の文字列を全角に変換する方法が分からないという質問をいただいたので、処理方法を考えてみました。

VBAであればStrConv関数があるので簡単に変換できるのですが、残念ながらPADには用意されていません。

ただ、VB.NETにはStrConvメソッドが用意されているので、今回は「.NET スクリプト実行」アクションを使ってこのメソッドを活用することにします。


フロー全体

さっそく作成したフローが下記になります。

実行する変換の種類を指定する変数の設定

StrConvメソッドの定義は下記のようになっていて、Conversionパラメーターで変換の種類を指定するようになっています。

[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static string? StrConv (string? str, Microsoft.VisualBasic.VbStrConv Conversion, int LocaleID = 0);

https://learn.microsoft.com/ja-jp/dotnet/api/microsoft.visualbasic.strings.strconv?WT.mc_id=M365-MVP-4029057 より

Microsoft Learnの資料を参考に、まずは変換の種類を指定するための変数を設定します。

関数の解説サイトに下記の説明があるように、変換の種類は複数同時に指定できるので、リスト形式の変数(%ConvList%)として用意しておきます。

VbStrConvの値はビットごとの組み合わせが可能ですので、複数の変換を同時に行うこともできます。例えば、ひらがなをカタカナにして、さらに全角を半角にするには、VB.NETでは「VbStrConv.Katakana Or VbStrConv.Narrow」、C#では「VbStrConv.Katakana | VbStrConv.Narrow」とします。

https://dobon.net/vb/dotnet/string/strconv.html より

「.NET スクリプト実行」アクション

変換の種類を指定する変数の準備ができたので、あとはVB.NETのコードを実行するだけです。

スクリプト パラメーターは下図のように、入力値として変換元の文字列(%SourceString%)と変換の種類(%ConvList%)を、出力変数として %ConvertedString% を指定しています。

実行する .NET コードは下記の通りです。

Dim Conv As Integer = 0
For Each i As Integer In ConvList
    Conv = Conv Or i
Next
ConvertedString = Microsoft.VisualBasic.StrConv(SourceString, Conv, 1041)

実行結果

結果は下図の通りで、元の文字列「アイウエオabc123カキクケコ456」が「あいうえおABC123かきくけこ456」(大文字・平仮名・全角)に変換されていることが確認できます。

以上のように、.NETスクリプトを活用することでPADの標準機能では難しい処理も行えるようになりますので、必要に応じて是非ご活用ください。

この記事が気に入ったらサポートをしてみませんか?