RPAにもセンスが必要⁉️【PowerAutomate Desktop】

久しぶりの「power automate desktop」の記事になりますね。windows11で標準搭載されたpower automate desktop。

最近は、Chat GPTや画像生成AIの話題でもちきりですが、プログラミングの基礎知識は、どんなにAIが普及してもビジネスには必須だと思います。

変数やループ、関数や条件分岐などの知識は、どんなにAIが身近になっても必要不可欠ですよね。

また、プログラミングにおいて、動けば良いという問題ではなく、コードの可読性や修正やメンテナンスのしやすさも必須と言われています。
それは、ノーコードやローコードのRPAでも変わりはなく、気軽にプログラミングできるRPAだからこそ、可読性や修正がしやすいフローにすることが求められている気がします。

というのは、せっかく作ったフローも、webの更新などで、あっという間に動かなくなってしまうことがしばしばあります。
特にUI要素を駆使したフローは、更新の度に動かなくなることが多いように感じます。
UIピッカーで取得した要素が微妙に変わっているのを見ると、唖然とします。
複数のサブフロー、全てのUI要素を更新するのは、非常に手間がかかります。
webにどんな更新があろうとも、一箇所だけ直したら問題なく動くフローが理想です。

RPAであっても、「美しいコーディング」で言われていることは意識しないといけないと感じる今日この頃なのでした。

今回のプログラム

介護ソフトにおける利用者毎の指示欄に、自動で定型文を入力する

今回のフローの特長は、サブフローを使わないことと、利用者ごとの指示の定型文を予めデータテーブルに入れておいて、一回ごとに変数を取り出して使う点です。

以前に作ったフローは、利用者毎にサブフローを作り、サブフロー内に定型文の入力設定をしていたので、web更新への対応ができていませんでした。更新への対応は、全てのサブフローを直さないといけない構成でした。フローとデータを分けられたら、この問題を解決できる、そう思ったのでした。

データテーブルのセット
まず最初に、利用者名と指示の定型文が入ったデータテーブルをセットします。
利用者名のUI要素の取得
次に、介護ソフトの当該ページの利用者名をUI要素で取得し、変数に入れます。先にセットしたデータテーブルの中から、取得した利用者名のあるインデックスを参照します。利用者名はデータテーブル内を縦に並べていますので、インデックスは必ず[x][0]になります。
データテーブルから利用者のインディックスを取得
続いて、そのxの番号を取得し、番号自体は文字列であるため数値化します。その番号は、データテーブル内の当該利用者の行番号(行インデックス)になります。指示の定型文は、その隣の列なので、データテーブルから利用者別の定型文を取り出すには、DataTable[x][1]で指定すれば取り出せます。
変数で取得した定型文のテキストフィールドへの書き込み
変数を組み込んでループ化させたテキストフィールドに定型文を挿入してゆけば、同じ文章の指示を自動で書き込むことができます。
利用者ごとに数が異なるテキストフィールドのループ処理
全てのテキストフィールドに書き込んだら、次のループはテキストフィールドがないのでエラーになるため、エラー処理でループを抜けるようにしておけば、次の利用者のページに遷途させるフローにジャンプさせることができます。
全利用者のループ処理
さらに、テキストフィールドのループを囲むようにして、さらに大きな括りの利用者ごとのループを設定しておけば、繰り返し、利用者別の指示の定型文をテキストフィールドに書き込むことができます。
フローの終了
あとは同じように繰り返し、最後の利用者まで来たら、メッセージボックスが立ち上がるようにしておけば、「全ての利用者の指示定型文の入力が終わりました」等と表示させれば作業終了の合図になります。翌月シフトがない利用者や飛ばす利用者は、次の利用者に遷途するようにしておきます。

これで、二重ループのある一つのフローで、全ての利用者ごとの指示の定型文を自動で書き込むことができます。
フロー自体に利用者名がないため、汎用性があり、アプリケーションの更新で不具合が発生しても修正しやすくなります。
フロー自体は全て変数で扱い、データ(利用者名と、利用者毎の指示の定型文)はデータテーブルに収納しています。データとプログラムを分けることで、可読性と修正のしやすさを両立させているわけです。データとプログラムを分けて収納することはwordpressをはじめwebサイト等では一般的ですが、プログラミングの現在形なのでしょう。

データテーブル~2次元配列変数は、勉強会や定例会議の出欠確認にも使っていますが、使い始めると、めちゃくちゃ便利ですね。ヒューマンエラーもなく早くて正確で、仕事に役立つ上に、何よりプログラミングがこんなに面白いものだったなんて、目から鱗ですね。