PAD基礎③「ループ」で複数のデータを処理する

業務自動化

前回、PAD基礎②では、1台分の測定データを試験成績書に自動で書き写してくれる考え方を学びました。ただ、これだけだと1台分コピー&ペーストしてくればおしまいのところもあって、便利ではあってもまだまだ魅力的ではないかも知れません。

今回は、複数台の各データを検索してきて、それを一気に試験成績書にコピー&ペーストしてくれる考え方をお話したいと思います。まさにPower Automate for Desktop の醍醐味となります
先の基礎②で作成したフローを少しだけ改造していくことで実現できるので、こちらをベースに複数台を「ループ」と言う機能を使うことで簡単に作り上げられるという考え方にテーマを絞ってお話ししていきます。過去の資料についてはこちらをご参照ください(一から作成するにおいてもこちらを先にご覧になって進めてもらえると良いかと思います)

PAD基礎② データをコピー&ペーストする
今回は測定された製品のログデータファイルから1台分のシリアルナンバーを検索して試験成績書にプロットする自動化をPower Automate for Desktop(通称PAD)で行ってみます。必要な元データが別のサーバや別ファイルにあって、...
PAD基礎① Excelファイルを立ち上げる
まずは基礎中の基礎として、Excelファイルを立ち上げることを学びましょう。ファイルを立ち上げるには、主に2つの方法を知っておくと効果的です。ファイル名と場所がわかっている場合ユーザーがファイル名を選択したい場合それでは、各々の場合の組立方...

今回のテーマ

今回も左側の「測定データ」を使って、右側の「試験成績書」に自動的にプロットすることを考えるのですが、前回と異なるところは、抽出してくるデータが複数台(今回は試験成績書に合わせて便宜上3台分)であることです。これを一度に取ってきてプロットすることには、「ループ」という機能を使います。

この「ループ」を使う事で繰り返しの動作をフローの中に設定することになりますが、前回の作成したフローを少し改造して行くことで実現可能となります。

今回は、その「ループ」という考え方を学んでいきましょう。
その前に新しいフローに前回のフローのコピーを行っておきます(元のフローを残しておくことが目的)。
前回のフロー(PAD基礎②)についてはこちらの記事を参考にしてください。

PAD基礎② データをコピー&ペーストする
今回は測定された製品のログデータファイルから1台分のシリアルナンバーを検索して試験成績書にプロットする自動化をPower Automate for Desktop(通称PAD)で行ってみます。必要な元データが別のサーバや別ファイルにあって、...

前回のフローのコピー

それでは実際のフローの改造の前に、前回のフローを呼び出して、新しくフローを作成してみましょう。
前回のフローをダブルクリックして呼び出し、また「新しいフロー」で空のフロー作成画面を用意します。

① 前回のフローの画面(フロー部分)にカーソルを当て、全画面選択(Ctrl+Aを押します)を行います。(もしくはすべてのフローを選択してもよい)⇒ 全アクションが選択されます。
② マウスの右クリックにてコピー、もしくはCtrl+Cでコピーを行います。
③ 新しいフローの画面で、フロー画面にて右クリックにて貼り付け、もしくはCtrl+Vにてペーストを行います。
④ そうすると同じフローが新しいフローにコピーされます。
⑤ 念のため、一旦新しいフローのセーブ💾をしておきます。

今後必要となったフロー部分も同じように選択されたブロックをコピーすることができます
この選択コピーしたフローは、テキストエディタ上にペーストすることで他の人に渡すこともできます。なお、テキストエディタから復元する際にも、テキストエディタ上の全コピーを行ってください。

それでは、実際の改造に入っていきます。

入力部分の改造(3台分の複数入力対応にする)

まずは、複数台のシリアルナンバーを入力できるように、入力画面となるテロップを改造します。

① フローの中の「入力ダイアログを表示」(3行目)をダブルクリックし、設定画面を開きます。

② 入力の種類を、▽をクリックし、「1行」から「複数行」に変更し保存します。

こうすることで、複数台の入力が可能となります。複数台はシリアルナンバーを改行で入力イメージで、入力画面は次のような感じになることをイメージできれば良いかと思います。

入力時には、左のようにシリアルナンバーを改行して入力するようにします。

入力内容を改行部で分割

複数台のシリアルナンバーは改行はされているものの、データとしては未だつながっています。これを改行部分をキーとして切り離すようにします。

① アクションのテキストを開き、「テキストの分割」を「入力ダイアログの表示」と「Excelワークシート内のセルを検索して置換する」の間にドラッグ&ドロップします。

② 分割するテキストには、変数 %シリアルナンバー%を{X}から選んできます
③ 区切り記号は、「標準」とします。他にユーザー設定で「カスタム」や「文字数」によって区切ることができますが「標準」のまま。
④ 標準の区切り記号は、「新しい行」とします。このことで、改行がなされた部分でシリアルナンバーを分けることになります。分かれたそれぞれのシリアルナンバーは、配列リストとして保管されます。
⑤ 回数は、「1」のままです(改行はシリアルナンバーの間に1つずつ入っているので)。
⑥ 生成された変数は、「TextList」で自動設定されています。ただし、今回は、元々ある変数の「シリアルナンバー」に上書きして、配列の変数として更新することとします。このため、ダブルクリックして「シリアルナンバー」として入力することで再設定します。

これまでの「シリアルナンバー」が上書きされ、配列リストとして再設定されることを意味します。
配列においては、左記のように[0]を最初として、以降分割された「シリアルナンバー」が[0]、[1]、[2]・・・とそれぞれの個別の引き出しを作り、変数データとして取り扱うことができます。

シリアルナンバーの挙動確認(テスト)

ひとまず、変数「シリアルナンバー」の動きをデバッグモードを使って確認してみましょう。
これまでの少しづつ作っては動作チェックすることで、正しく動いていることを確認してきたりしました。ここでは、もう少しスマートな確認方法を紹介したいと思います。

①  一旦セーブ💾しておきましょう。
「テキストの分割」(4行目)と「Excelワークシート内のセルを検索して置換する」(5行目)の左側の数字あたりをクリックして、ホールドポイント●(赤丸)を点灯させます。

これはデバッグモードと言って、この地点で一旦フローが停止させることができる機能になります。テスト動作のときに便利です。

③ この状態で、「入力ダイアログを表示」のアクションをクリックして選択し、右クリックで「ここから実行」を押します。そうすることで途中からホールドポイントまでの間をテストすることができます。

④ 入力画面にて、3台分のシリアルナンバーを任意で改行して入力してみます。右図は事例です。

⑤ すると、フローは一つ目のホールドポイント「テキストの分割」で停止します。
⑥ この時点では、まだ変数 シリアルナンバー は改行コードは入っているものの、3つの値がつながった状態となっています。(1010501 1010502・・・)
⑦ 次のステップに進めるために、左上の「次のアクションを実行」を押します。

⑧ するとテキスト分割により、変数 シリアルナンバーリスト化されて上書きされるようになります。([1010501, 1010502・・・)

こうやって変数がひちつずつ分離され、シリアルナンバー単体でも使えるようになるわけです
配列とは同じ変数名の棚にしまってある「0」から番号のついた「引き出し」のようなものです。

⑨ 最後は、停止■を押して、ホールドポイント●赤丸もクリックして消し、デバッグ修了します。

ループをかける

いよいよ本題の「ループ」を組み込んでいきます。3台分のシリアルナンバーがわかっているので、ループの回数は3回と既知であることから、決まった回数のループを「Loop」アクションという機能で繰り返し検索動作を行うようにします。

ループの設定

① アクションのループを開き、「Loop」「テキストの分割」と「Excelワークシート内のセルを検索して置換する」の間にドラッグ&ドロップします。
② Loop設定画面にて、開始値は「0」を入れます。これは、変数 シリアルナンバー[0]から始まることからの認識合せのためです。

③ 終了は、「2」とします。これは、シリアルナンバーの配列が[0]、[1]、[2] の三個であることからの終了値であるからです。

④ 増分は、「1」としますこれは、シリアルナンバーの配列がひとつずつの間隔で増えていくからです。

⑤ 生成された変数に LoopIndex が保管されます。

LoopIndex は、ループの回数を決める変数として使用します。例えば今回の設定では、最初、そのまま下に進むので、LoopIndex =0となります。
Loop内の最後に来たら、LoopIndex に増分を足してLoopIndex=1)Loopの頭に戻ります。
次にまたLoop内の最後に来たら、LppoIndexに増分を足してLoopIndex=2)としてLoopの頭から処理して、Loop終了が「2」となるまで繰り返し、そしてループを抜ける、と言った具合です。

ループの骨組みを作る

次に、ループの中にループさせたいアクションを入れていきます。ループさせたい事とは「シリアルナンバーでの検索」、そして「データの読み取り」、最後に「シートへの書き込み」です。こちらは、前回の1台分のデータの自動転記の際にイメージできているかと思います。これらをループの中に組み込むわけです。

前回②のときに、これらはすでに作ってあるので、これらのアクションをマルっと移してきましょう。

① 7から10行目の「Excelワークシート内の検索」、「読み取り」「書き込み」の各アクションが、今回のデータ抽出の繰り返し動作に相当しますので、この4つのアクションを選択します(測定データとシリアルナンバー)。
② この4つのアクションを「Loop」と「End」の間にドラッグ&ドロップして、移動させます。
③ すると「Loop」と「End」の間に4つのアクションが移動してループ動作ができるようなフローの形になります。

実際にはこれで終わりではなく、ループ内の4つアクションをループ内で動作できるように変数LoopIndexを駆使して、少し改造していきます。

ポイントは、
 ・変数 シリアルナンバー が配列リストとなったため、配列表示にしてあげること
 ・試験成績書の3台分のプロットする位置が、それぞれズレていること

これらを頭に入れておけば、難しく考えることはありません。

シリアルナンバーの配列への対応

ここでは、配列にて複数のシリアルナンバーが取り扱えるようになった変数への変更対応を説明します。

① 6行目の「Excelワークシート内のセルを検索して置換」をダブルクリックします。
② 検索するテキストには、これまで「%シリアルナンバー%」が入っていたのですが、これだと配列全体を示してしまうこととなるため、各々のデータとして取り出せるように下記に改造します。

  %シリアルナンバー[LoopIndex]%

これは、シリアルナンバーの配列が[0]、[1]、[2] となっていることに対して、ループの回数を配列数値に置き換えて変化させることで、ループ毎に検索するシリアルナンバーを割り当てようとするものです。  (LoopIndex は、0.1,2 でループする)

このことによって、ループ回数に合わせたシリアルナンバーが呼び出せます

検索データの書き込み位置の修正

ここでは、配列にて複数のシリアルナンバーが取り扱えるようになった変数への変更対応を説明します。

測定データのプロット

① 8行目の「Excelに書き込む」をダブルクリックします。

② 列のところは、抽出回数に沿って、エクセルの列がひとつずつ右にシフトしていくので、これをLoopIndex に合わせてひとつずつ足し算していくこととします。どういうことかというと、
出発点はC列=3ですので、列の変数を%LoopIndex +3%として書き換え、ループ内で列の増分を行います
※ ちなみに行は変化はないので、このままです。

シリアルナンバーのプロット

ラストは、同様にシリアルナンバーのプロットもループに対応するように改造しましょう。

① 9行目の「Excelに書き込む」をダブルクリックします。

② 書き込む値は、シリアルナンバーをループ内の単体でループ毎に変化させるため、

  %シリアルナンバー[LoopIndex]%  とします。(LoopIndex が[0]⇒[1]⇒[2] と変化するため)

③ 列のところは、抽出回数に沿って、エクセルの列がひとつずつ右にシフトしていくので、これをLoopIndex に合わせてひとつずつ足し算していくこととします。
出発点はC列=3ですので、%LoopIndex +3%として書き換え、ループ内で列の増分を行います
※ ちなみに行は変化はないので、このままです。

変数は、
・ %シリアルナンバー[LoopIndex]%  のように配列の中に変数を組み込んだり
・ %LoopIndex +3%        のように%-%の間に計算式を入れたり
することができます。

改造は以上で終わりです。1台分のデータの転記についての理解をしておくことで、「ループ」による繰り返しの仕組みとしてもどのような違いがあるか、理解が深まったら幸いです。

テストランしてみよう

フローの完成に伴い、正常に動いているか確認してみましょう。全体を見るとざっくり10行くらいのブロックがつながっています。

① 一旦セーブ💾して、実行「▶」してみましょう。

② 測定データと試験成績書のファイルが立ち上がりますが、その後、製品シリアルナンバーのインプット画面が現れます。ここで3台分入力します

今回は、1010502、1010503、1010504を例題的に入力してみます。

③ 測定データから自動的にそれぞれの測定データを読み取り、試験成績書側のエクセルにプロットしてくれました。この間、わずか数秒です。人間業ではできないスピードですね。

これが、もっとたくさんの台数・・・つまり10台とか100台のデータを取り扱うとなれば、人が検索してデータを取ってきて、プロットするだけでたいへんです。これをロボットが「ループ」という繰り返し動作を行ってくれることで、素早く処理してくれるので非常に強い味方となります。

このように複数台を一度に取り扱うとロボットの効果が顕著に出てきます。
これなら業務の効率化も期待できそうですね。

このような感じで、複数台の繰り返し動作のフローを作って行くことで自動化が格段に進みます。
自動化の考え方と自動化の素晴らしさが伝わったでしょうか。

まとめ

それでは今回のまとめです。
今回は、Power Automate for Desktop の基本動作であるループの考え方について学びました。

① 今回は複数台のデータを一度に検索して抽出するテクニックを学びました
② 複数の入力データは、分割して配列形式に置き換えることで、ひとつづつ扱うことを学びました。
ループという機能を使って、複数台を繰り返し操作できることを学びました。
④ 取得したデータについて、ループの中で読み書きする方法を学びました。
⑤ データをプロットする位置の考え方を学びました。
⑥ フローのブロックをコピーするテクニックを学びました。

ループの方法は、他にも対応方法がありますが、今回の考え方を使って、ループ内のLoop回数を基にプロットする位置をずらして行きながら書き込むテクニックは、自動化を実践する上でたいへん役に立つ考え方ですので、ぜひ身につけておきましょう。

この基本的な考え方によって、たくさんのデータを一度に取り扱う知識が身についたので、様々な応用ができることになります。

Power Automate for Desktop 日本語ベースで、初心者にとっても取り扱いやすく、プログラミングの知識がなくても簡単に自動化を行うことができますので、業務改善に非常に有効です。ぜひ、いろいろ自動化していくことで、みなさんの業務を少しでも楽に、そしてミスや改ざんなどなく質の高いお仕事ができるようにチャレンジしてみてくださいね。  それでは、また!

タイトルとURLをコピーしました