

この記事でわかること
- Power Automate for desktopの「テキストの分割」のアクションの使い方
- スクリプト系アクション(Python・VBScriptなど)から受け取ったデータをリストに戻す方法
テキストの分割

テキストを分割するには「テキストの分割」アクションを使います。Excelのsplit関数と基本的な使い方は同じです。



「テキストの分割」アクションは正規表現を使うことができますので、Excelのsplit関数より柔軟にテキスト分割できるかと思います。
基本的なテキストの分割をやってみる
下記のコロンで連結してひとつなぎになった文字列を、コロンで分割してみます。
山田:田中:佐藤:鈴木:小田:遠藤:加藤


▲変数の設定アクションを追加して下記の文字列を入力しました。
山田:田中:佐藤:鈴木:小田:遠藤:加藤


- 分割するテキスト:%NewVar%
- 区切り記号の種類:カスタムを選択します。
- カスタム区切り記号:
:
(コロン) - 正規表現である:オフ
フローを実行します。「テキストの分割」アクションはデフォルトで%TextList%というリスト型変数に出力されます。%TextList%変数の中身を見てみます。


▲%TextList%の中身を確認すると、ただの文字列変数をリスト変数に変換することができました。便利ですよね。
Robinソースコード
SET NewVar TO $'''山田:田中:佐藤:鈴木:小田:遠藤:加藤'''
Text.SplitText.SplitWithDelimiter Text: NewVar CustomDelimiter: $''':''' IsRegEx: False Result=> TextList
▲今回作成したPower Automate for desktopのフローです。フローデザイナーにコピペすればフローを再現できます。
正規表現を使ったテキストの分割



次は正規表現を使った少しパターンでマッチングさせてテキスト分割してみます。


例:HTMLテキストからHTMLタグを取り除く
<html>
<body>
<div class="main-content">
<div id="first-section">
<li>item1</li>
<li>item2</li>
<li>item3</li>
<div id="sub-section">
<li>item4</li>
<li>item5</li>
<li>item6</li>
</div><!-- section -->
</div><!-- section -->
</div><!-- main-content -->
</body>
</html>
▲このサンプルHTMLからHTMLタグでテキストを分割してみたいと思います。




- 分割するテキスト:%NewVar%
- 区切り記号の種類:カスタム
- カスタム区切り記号:
<.*?>
- 正規表現である:オンにします。


▲フローを実行してみました。「テキストの分割」アクションの結果であるTextList変数の中身を確認してみますと、HTMLタグで分割されていることが確認できます。
冒頭でもお伝えしましたが、コンテンツを持たないdivタグなどの場合、結果のリスト変数の中身に空白の文字列がまじってしまいましたので別途削除の手順が必要になるかと思います。


▲上のフローだと%TextList%変数の中に空白文字がまざってしまいました。原因としては元のテキストにタブやスペースが含まれていたからです。
これらを削除するには「テキストを置換する」アクションが便利です。削除じゃなくて置換?と思うかもしれませんが、イメージとしては「スペースやタブ」を「何もない空っぽの文字」で置換することによって結果的に削除します。「何もない空っぽの文字」のことをプログラミングでは空文字(からもじ)と言ったりします。
「テキストを置換する」アクションを「テキストを置換する」アクションの前に挿入します。


- 解析するテキスト:%NewVar%
- 検索するテキスト:\s
- 検索と置換に正規表現を使う:オン
- 置き換え先のテキスト:
%''%
- 生成された変数:%NewVar%
Robinソースコード
SET NewVar TO $'''<html>
<body>
<div class=\"main-content\">
<div id=\"first-section\">
<li>item1</li>
<li>item2</li>
<li>item3</li>
<div id=\"sub-section\">
<li>item4</li>
<li>item5</li>
<li>item6</li>
</div><!-- section -->
</div><!-- section -->
</div><!-- main-content -->
</body>
</html>'''
Text.Replace Text: NewVar TextToFind: $'''\\s''' IsRegEx: True IgnoreCase: False ReplaceWith: $'''%''%''' ActivateEscapeSequences: False Result=> NewVar
Text.SplitText.SplitWithDelimiter Text: NewVar CustomDelimiter: $'''<.*?>''' IsRegEx: True Result=> TextList
Variables.RemoveItemFromList.RemoveItemFromListByValue Item: $'''%''%''' ItemMatchAllOccurrences: True List: TextList NewList=> TextList
▲フローデザイナーに貼り付けることでここで作成したフローを再現できます。
「テキストの分割」アクションの使いどころは?
スクリプト系アクションの戻り値を分割するのに使える。


▲Pythonなどのスクリプト系アクションとのデータの受け渡しはリストを直接やり取りができません。例えばPythonスクリプトからリスト変数をPower automateに返却する際には一旦ひとつの文字列にしてPower Automateに返却します。
この時にPower Automate側でPythonアクションの戻り値を、「テキストの分割」アクションを使ってカンマで分割すれば元のリストに戻すことができます。くわしくは上の記事で紹介していますのでよろしければご覧ください。
正規表現を学ぶには?



正規表現を理解していると「テキストの分割」を含めたテキスト操作系のアクションでできることがグンと広がります。
正規表現を0から学ぶにはUdemy動画講座がオススメです。Udemyの正規表現をテーマにした動画講座は3つ受講しましたが、その中でも下記の講座が一番わかりやすかったです。
正規表現入門 作業効率アップに役立つ38個の方法

購入される場合は、Udemyは頻繁にセールを開催しますので講座をお気に入りに登録しておき、セール時に購入することをオススメします。
関連記事






まとめ



テキストの分割アクションについて紹介しました。



このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!
Power Automate学習教材
▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。
▲Power Automate for Desktopの基本をしっかり学習するのにオススメです。RPA界隈では有名なRPAエンジニア集団である『ロボ研』さんが監修されている解説書です。テスト用の業務Webシステム/デスクトップ業務アプリを使いながら実践形式で学習できる点が一番のメリットかなぁと思います。
▲Power Automate クラウドフローの入門書です。日本語の解説書は数少ないのでレアかと思います。変数の解説から代表的なアクションの解説がされているので初心者におすすめの本です。
Microsoft 365/ Power Automate / Power Platform / Google Apps Script…
▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります。頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。