この記事でわかること!
- Power Automate for desktop(PAD)でテキストの行数を取得する方法がわかる。
テキスト(文字列)の行数を取得したい。数えたい。
PADでブラウザやアプリケーションから取得したテキストの行数を知りたい時があります。
テキスト変数には行数をパッと返してくれるプロパティが残念ながらありません。そのため、一旦リスト変数に変換してからリスト変数のプロパティを使って行数を確認するのが良いかと思います。
テキスト変数をリスト変数に変換?どうやるの?
テキスト変数をリスト変数に変換するには「テキストの分割」アクションが便利です。
行数カウントする流れ
行数を確認する方法!
- テキストを「テキストの分割」アクションを使って、行ごとに分割してリスト変数にする。
- 出力されたリスト変数のLengthプロパティを見れば行数がわかる。
テキストの分割アクションとは?
テキストの分割アクションについては下記の記事で紹介しているので併せてご覧いただくとわかりやすいかと思います。
フローを作成してみよう。
例として、今回はMicrosoft Wordファイルの文書をフローの中で取得し、そのテキストの行数をカウントしてみたいと思います。
下記が今回ターゲットにするWordファイルです。このWordの文章の行数をカウントします。
▲「ウィンドウにあるUI要素の詳細を取得する」アクションを追加します。
「ウィンドウにあるUI要素の詳細を取得する」アクションはアプリケーションから情報を取得するためのアクションです。
▲UI要素というパラメータにWordファイルから取得したUI要素を設定します。
UI要素の取得方法についてわからない場合は、下記の記事で紹介しているのでそちらをご覧ください。今回は詳しい説明は省略させていただきます。
Word文書が読み込めるかを確認するためにテスト実行してみます。
▲「ウィンドウにあるUI要素の詳細を取得する」アクションは結果を「AttributeValue」というテキスト型の変数に出力してくれます。フロー実行後にこの変数をダブルクリックしてみると、↑の図のように取得できていることが確認できます。
この図を見るとWordには4行のデータがあるようなので「行数は4」と取得できれば成功ですね。
▲「テキスト」グループの中の「テキストの分割」アクションを追加します。
▲「テキストの分割」アクションのパラメータを入力します。
パラメータ
- 分割するテキスト:%AttributeValue%
- 区切り記号の種類:カスタム
- カスタム区切り記号:\r\n|\n|\r
- 正規表現である:オン
今回、カスタム区切り記号に指定している「\r\n|\n|\r」は正規表現というパターンを表現する表記法において改行コードを表しています。
つまり「改行があったらテキストを分割してね」って意味ですね。
改行コードは3種類(下表)あるので、念のためいずれの改行コードにもマッチする書き方をしました。
改行コード | 説明 |
---|---|
\r\n | Windowsの改行コード |
\r | MACの改行コード |
\n | Linux/UNIXの改行コード |
下図のように指定することで正規表現を使わないで改行単位で分割する方法もあります。ただ、下図の方法はターゲットテキストによってはうまく分割できないことがあるので今回は正規表現を使いました。
「テキストの分割」アクションが正しく動作しているか確認するためにフローをもう一度実行してみます。
「テキストの分割」アクションは結果を「TextLists」という名前のリスト型変数に出力してくれます。この変数の中身を確認してみましょう。
▲こちらが結果です。4行のテキストデータが4つのリストデータになりました。成功です。
行数を「メッセージを表示」アクションで表示させてみます。
▲「メッセージを表示」アクションを追加してパラメータを入力します。
パラメータ
- 表示するメッセージ:行数は%TextList.Count%です。
行数は「%TextList%変数に値が何個あるか」と同じです。
「%TextList%変数に値が何個あるか」を確認するには%TextList%変数の「Count」プロパティを確認します。
▲TextList変数のCountプロパティを入力するには、①{x}をクリック > ②TextListをクリック > .Countをダブルクリックします。この操作を行うと「%TextList.Count%」という文字列を設定画面に挿入できます。
▲フローが完成しました。フローを実行してみます。
▲こんな感じで行数をメッセージボックスに表示させることができました。成功です。
行数が1と取得・表示される時の対処方法
上で紹介した方法を使って行数を取得したとき、実際は複数行あるのに1行と認識されるケースがあります。
その場合、元のテキストに改行が入っていないのが原因の可能性があります(今回の例ではWordファイル)。
この場合は、ケースバイケースですが句点「。」で文章ごとに分割してしまう方法などがあります。
1行多くカウントされてしまうときの対処方法
ターゲットテキストによっては4行なのに5行というように1行多くカウントされることがあります。これは文末に改行コードがある場合、下の図のようにリストに空白行が挿入され、その分1つ多くカウントされることが原因です。
対策としては、「テキストの分割」アクションの前にターゲットテキストから「テキストのトリミング」アクションを使って文末の改行コードを削除しておくとよいでしょう。
あるいは%TextList.Count-1%とすることで引き算でマイナス1する方法もあります。
まとめ
PADでテキストの行数をカウントするために「テキストの分割」アクションでリストに変換する方法について紹介しました。
このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!
Power Automate学習教材
▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。
▲Power Automate for Desktopの基本をしっかり学習するのにオススメです。この本の一番のメリットはデモWebシステム・デモ業務アプリを実際に使ってハンズオン形式で学習できる点です。本と同じシステム・アプリを使って学習できるので、本と自分の環境の違いによる「よく分からないエラー」で無駄に躓いて挫折してしまう可能性が低いです。この点でPower Automate for desktopの一冊目のテキストとしてオススメします。著者は日本屈指のRPAエンジニア集団である『ロボ研』さんです。
▲Power Automate クラウドフローの入門書です。初心者の方には図解も多く一番わかりやすいかと個人的に思っています。
Microsoft 365/ Power Automate / Power Platform / Google Apps Script…
▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります。頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。