初めてRPAツールを触る方や基本的なプログラミング学習向けに、Power Automate Desktopのサブテキストの取得アクションを使ってテキスト型の変数から文字列を抜き出す方法について解説しています。ご自身の環境で動作可能なフローのテンプレートも共有して説明していますので、Power Automate Desktopを使った自動化フローを作る際の参考にしてみてください。
マイクロソフトの無償RPA(自動化ツール)である「Power Automate Desktop」の「サブテキストの取得」アクションについて解説しています。
テキストを特定の条件で抜き出す際に便利なアクションのため、アクションの設定方法や使い方をぜひマスターしてみてください。
無料自動化ツールの「Microsoft Power Automate Desktop」について、そもそもの解説や導入方法についてはPower Automate Desktopについてをお読みいただくと基本的な使い方などが確認できます。
「サブテキストの取得」アクションについて
「サブテキストの取得」は、テキスト型の値(文字列、文章など)からテキストを抜き出すアクションです。
テキストやWebサイトからの情報、Excelの帳票などから文字情報を使いたいとき、必要ない要素が含まれていると正しくフローが実行できない場合などがあると思います。
こういった時は、この「サブテキストの取得」アクションを使うと、全体の文字列から必要な部分のみを抜き出すことができます。
「サブテキストの取得」アクションの設定方法
「サブテキストの取得」アクションには以下のような設定項目があります。
[元のテキスト]:文字を取り出すもととなるテキスト型の変数を指定します。
[開始インデックス]:取り出す文字の開始位置を「文字の位置」もしくは「テキストの先頭」からのいずれかで指定します。
[文字の位置]:[開始インデックス] を「文字の位置」にした場合に表示されます。取り出す文字の開始位置を指定します。ここには数値や変数、数式などを指定することが可能です。
[長さ]:取り出す文字の終了位置を「文字数」もしくは「テキストの末尾」までのいずれかで指定します。
[文字数]:[長さ] を「文字数」にした場合に表示されます。取り出す文字の終了位置を、開始位置からの文字数で指定します。ここには数値や変数、数式などを指定することが可能です。
設定のポイント
[文字の位置] と [文字数] の2つの設定を組み合わせることで、文字列の中から任意の内容を取り出すことができるアクションですが、指定する数値は [文字の位置] が開始位置、[文字数] が実際に取り出す文字数である(終了位置ではない)ことに注意してください。
例えば、「【令和最新版】チーズケーキ 1ホール 直径18cm 送料無料
」のような文字列から「チーズケーキ
」の文字列を取り出すには [文字の位置] の指定が「8」(文字目)、[文字数] の指定が「6」(文字数)などとなります。
また、文字数は前述の「8」や「6」のように直接数値を指定することもできますが、変数を指定することも可能です。通常、長さが異なるテキストを解析してサブテキストを取り出すような場合は変数が使われます。
そして、この開始位置や文字数の値は、文字列の長さや文字の検索結果などを基に算出することができるため、「テキストの解析」アクションなどと組み合わせることによって、長さや構造の異なる文字列からある法則性を基準に自由に取り出すことが可能です。
特定の記号を基準に任意の長さの文字を取り出す例については次の項目で解説します。
「サブテキストの取得」アクションの設定のサンプル
ここでは、カッコ【 ~ 】
で囲まれた要素を持つ文字列から、そのカッコの内側の文字列のみを取り出すアクションの設定方法を説明します。
サンプルフロー
作成したフローのスクリーンショットです。
このサンプルフローでは。テキストの解析アクションを使って「【」と「】」の位置を確認し、取り出したい文字列の位置を自動的に算出し、サブテキストの取得アクションを使ってカッコの内側にある文字列を取り出します。
対象となる%Text%
変数にはここに【テキスト】を入力
という内容がセットされているため、このフローの実行結果(%SubText%
の内容)はテキスト
となります。
ここではひとつの文字列を例としていますが、ステップ2からステップ4までのアクションは変数を使って指定しているので、例文以外の異なる長さや構造の文字列にも対応します。
アクションの解説
テキストの解析アクションで開始位置と終了位置を取得する
ステップ2とステップ3では「テキストの解析アクション」を使って取り出す文字列の条件となる要素の位置を取得しています。
ステップ2の設定例は以下のようになっています。
[検索するテキスト] を「【」とし、[解析の開始位置] を「0」とすることで、一番最初に登場する「【」の位置を取得できます。この取得した数値は %StartPosition%
という変数に格納します。
同様に、ステップ3では同じ「テキストの解析」アクションを使い、「】」の位置を%EndPosition%
という変数に格納します。
「サブテキストの取得」アクションで開始する文字の位置、文字数を変数から算出する
ステップ4で、「サブテキストの取得」アクションを使って文字列を取り出すのですが、この時にステップ2、ステップ3で取得した変数を使って簡単な計算を行うことで期待した文字列を取り出すことができます。
まず、開始する [文字の位置] の指定ですが、これは「【」の登場した位置の1文字分うしろの値となりますので、ステップ2で取得した%StartPosition%
に1を足した値となります。
そして、取り出す [文字数] は、「】」の登場した位置から開始位置を引いた数となります。つまり、文字数 = %EndPosition%の値 - ( %StartPosition%の値 + 1 )
となります。
上記の算出方法を踏まえて、計算式を含めた変数の指定は以下のようになります。
変数の指定のポイントですが、変数や数値の計算を行うには% ~ %
の間に変数名や計算式を記述します。
今回の例の場合、[文字の位置] の指定となる「%StartPosition%
に1を足した値」は%StartPosition + 1%
と記述します。
また、取り出す [文字数] の指定となる%EndPosition%の値 - ( %StartPosition%の値 + 1 )
は、%EndPosition - (StartPosition + 1)%
もしくはカッコを展開し%EndPosition - StartPosition - 1%
と記述します。
このように、文字検索とサブテキスト取得を組み合わせることで、特定の記号や文字列などの法則性を使って自由に文字を加工することが可能です。
サンプルコード(Robin)
今回のサンプルフローのRobin言語ソースコードです。
コードをコピーし、Power Automate Desktopの編集画面に張り付けると、テンプレートとしてアクションをご自身の環境でそのまま利用することができます。
SET Text TO $'''ここに【テキスト】を入力'''
Text.ParseForFirstOccurrence Text: Text TextToFind: $'''【''' StartingPosition: 0 IgnoreCase: False OccurrencePosition=> StartPosition
Text.ParseForFirstOccurrence Text: Text TextToFind: $'''】''' StartingPosition: 0 IgnoreCase: False OccurrencePosition=> EndPosition
Text.GetSubtext Text: Text CharacterPosition: StartPosition + 1 NumberOfChars: EndPosition - StartPosition - 1 Subtext=> Subtext
Display.ShowMessage Title: $'''取り出したテキスト''' Message: SubText Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False ButtonPressed=> ButtonPressed
フローの共有、共有されたコードの利用の詳細については作成したフローを他のユーザーに共有する方法でも解説しているので、併せてご参照ください。
まとめ
Power Automate Desktopの「サブテキストの取得」アクションについて解説しました。
RPAによるPCの自動化作業では今回のようなテキストの加工を必要とすることが多いと思いますが、自由に文字情報を加工するには複数のアクションの組み合わせや変数を使った算出なども必要となることがあるため、どのようにデータを取り出すかを整理しながらアクションを組み立てることがポイントです。
特に「サブテキストの取得」は開始位置や文字数など特定の条件を指定することが前提となっているため、他のアクションの使い方などと併せてどのようなデータが取り出せるのか試してみるとよいと思います。
クラベルではほかにもテンプレートとして使えるPower Automate Desktopのフローサンプルを解説付きでご紹介していますのでぜひ参考にしてみてください。
お読みくださりありがとうございました。今回の内容が少しでもお役に立てば幸いです。
コメント
凄いためになります!!
PDF Excel PowerPointの文字検索して、ある場合出力するなどする方法があれば教えていただきたいです!