見出し画像

【WinActor】引き出しを増やそうPart2

「WinActorシナリオ開発時に使える引き出しを増やそう」回の第二弾です。
今回もよくある状況を例にお話したいと思います。

👇第1弾の記事はこちらから!



1.シナリオファイルパス

まずは、シナリオファイル名(ファイルパス)の設定や取得方法についてのお話です。
シナリオ内で使用するファイルパスやフォルダパスの取得方法として、変数の初期値に設定したり、「変数値設定」「ファイル検索」などのノードを使ってシナリオ内で取得したり、Excelなどの外部ファイルに記録しておきそのファイルから取得する方法などがありますが、ここではいま実行しているシナリオファイルのパスを起点にその他のファイルやフォルダのパスを導き出す方法をご紹介します。

◆シナリオファイル名取得

まずはシナリオファイルのパスと、シナリオファイルが保存されているフォルダのパスを取得することができるライブラリです。
※ライブラリ▸01_WinActor制御▸06_シナリオ情報

【図1】シナリオの中でパスを取得することができる

シナリオフォルダパス(①)から取得したい作業用フォルダパス(③)への道筋を考えてこのようにノードを組んでみました。取得したいフォルダパスやファイルパスが複数ある場合も、シナリオファイルからの距離を考えて同様に設定することができます。
実行時の変数値の様子はこちら!👇

【図2】


◆シナリオフォルダのファイルパス

続いて、シナリオフォルダを起点として対象のファイルのパスを取得するライブラリです。
※ライブラリ▸13_ファイル関連▸05_ファイル名

【図3】ファイル名を未記入にすると、シナリオフォルダのパスを取得する

こちらもシナリオフォルダのパスを起点に取得したいファイルやフォルダまでの道筋を考えて設定します。「シナリオファイル名取得」との違いは、こちらはシナリオファイルパス自体は取得しないという点でしょうか。
実行時の変数値はこのようになっています👇

【図4】


2つのライブラリともに共通しているのが、シナリオファイルと対象のフォルダ・ファイルの位置関係が重要であるということです。
シナリオファイルと同じ階層にある前提でパスを取得したのに、そのファイルを別の場所に移してしまうと正しくパスを取得できなくなってしまいます。
逆に言うと、位置関係さえ崩さなければ別PCへ実行環境を移行しても設定をそのまま使うことができます。開発環境と実行環境を分けて運用している場合には移行時にパス設定を直さなくてよいので便利ですね!

☕こういう場合はどうする?
シナリオファイルと対象のフォルダやファイルの位置が離れている場合はどうでしょうか。例えば下記・図5の様に、シナリオファイルはローカル(デスクトップ等)にあり、使用するExcelファイルなどが社内の共有サーバ上にある場合はシナリオを起点に取得しようとするとノードがいくつも必要になり却って遠回りになります。
このような場合は、変数の現在値に入力する、Excelファイルなどから取得するなどノード数が少なく済むような別の方法を選択しましょう。特に共有サーバは多くの人が使用する場所でもありますし、階層やフォルダ名がいつの間にか変わることも考えられるため、メンテナンス性を考慮してExcel管理が良さそうです。

【図5】①から②は遠い…となったら別の方法にしよう



2.転記するファイルのフォーマット

Excel転記業務をRPA化する際にはまずフォーマットを確認します。フォーマットによって使うノード、やり方も変わってきますのでどのようなファイルを扱うのかよく見てみてください。

◆列の並びや項目数が同じ場合の転記

Excel転記では「18_Excel関連」の「Excel操作(値の取得)」「Excel操作(値の設定)」をよく使いますが、もし転記したい項目の列の並びが転記元と転記先で同じであれば、エミュレーションを使ってコピー&ペーストで一気に貼り付けることが可能です。

【図6】左からステータス、日時、商品名、数量という並びが同じと気づいたら…?

「ステータスが【キャンセル】なら転記しない」といった条件が入ってくる場合はそのままコピー&ペーストできないこともありますので、転記前と転記後のフォーマットをよく見比べてどう転記するのが早いのか(作業時間・実行時間)、ノードを少なく作れるかなども踏まえてその時々に合った方法を採用してくださいね。

【図7】一気にコピペできれば繰り返しが不要になる


◆列は固定か、可変か

図6のオーダ一覧へ転記するとき、「ステータス」「日時」といった項目の列を固定できるかという点も、決めつけずに確認しておきたいポイントです。このときはステータスがB列で日時がC列ですが、日によって違うような場合には注意が必要です。その場合には6行目で「ステータス」というキーワードを検索してどの列にあるかを特定してからその列に転記する、といった工程が必要になってきます。

☕こういう場合はどうする?
項目の列もキーワードも可変の場合はどのように考えたらよいでしょうか。
例えば、「ステータス」というキーワードが日によって(人によって)「受注状況」だったり「進捗」になるのではあれば、考えられる全パターンを検索して列を探すということはできそうです。
ただキーワードが固定できないとなると、開発段階では想定していないキーワードが実行時に初めて出てくる可能性も捨てられません。RPA化を機にキーワードを固定するように運用を変えるという手もありますよ!



3.Excelでの細かい作業

Excelは表計算ソフトでありながら多くの機能を持っているがゆえに、色を付けたり罫線の種類を使い分けたりと、人が見やすい・使いやすいように作られているファイルが多いため、現行のフォーマットに合わせた形でWinActorに作業させるためにはとても細かい処理・設定を要求されます。

【図8】転記後の見た目を整えたい


図8のように、Excelへの転記後の見た目を整えたいというご要望が上がることがあります。フォントや文字の太さ・サイズなどの設定ができるなど、Excelは機能が豊富なので作成している人ごとでもフォーマットは様々です。しかしこれらの細かい設定をすべてWinActorでさせようとすると少し手間になることがあります。

例えば行の高さの自動調整に関してはプチライブラリ(※)を使うことでそこまで手間をかけずに設定できますが、プチライブラリにもない場合はいくつかのノードを組み合わせて設定することになります。
※Excel操作(行列サイズ調整(シート内))など

セル結合の場合はざっくり、❶どこからどこまでが同じ得意先名なのかを調べ、❷結合する範囲を設定し、➌エミュレーション等でセル結合するという工程が生じますが、ノードに置き換えると3つでは足りません。

ではすべてWinActorでおこなう必要があるのか、WinActor以外の方法でも問題ないのであれば、どのような手段があるかを少し考えてみます。

  1. WinActorでノードやライブラリを組み合わせて作成する

  2. 書式の設定をしない(もしくは手動で設定する)ように運用を変える

  3. マクロや関数など、Excelの機能を使う

  4. 書式設定などをあらかじめ設定したテンプレートファイルを活用する

このあたりがパッと思いつくでしょうか。
3と4はやり方を知らないし…と思ってもすぐに諦めないでください。少し調べたら意外に簡単に設定できることが分かって、作業の時間としては1.2より早いということもあるかもしれませんよ!
ここでは3と4についてもう少し深掘りしたいと思います。


◆マクロや関数など、Excelの機能を使う

Excelは多機能なので、WinActorで設定するには手間暇のかかることを意外と簡単に実現できたりします。

あらかじめExcelフォーマットに関数や条件付き書式を設定しておき、値を入力したら即時反映するようにしておくと、WinActorでの作業内容を減らすことができます。

再掲:【図8】転記後の見た目を整えたい


金額の列へ合計金額を計算して入力するには、G列の金額欄へ関数を設定すると数量と単価を転記するだけで金額を正確に反映させることができます。
G2セルに「=E2*F2」を入力し、データの入力されている最終行までオートフィル(※)をします。
※ライブラリ▸18_Excel関連▸08_範囲▸Excel操作(AutoFill)

【図9】G列にはE列×F列を計算させる関数を設定


商品コードが特定の値のときその行のセルの色を変える設定には、条件付き書式を使うのも有効です。

【図10】条件付き書式:Excelのホームタブ▸スタイルから開く

特定の条件を満たすセルや行のみの書式設定をWinActorでするのは大変ですが、これなら値を入力するだけで自動で書式が反映されます。


また、マクロを活用するという手段もあります。
「セルの連結」や「間の罫線を点線に設定」などはマクロを使うと簡単に実行することができます。
既にあるマクロを活用するならともかく、自分で新しく作成するとなると少々ハードルが高いと感じる方もいらっしゃるかもしれませんが、インターネットやchatGPTなどで調べたらマクロもある程度までは作成できますし、実行時のスピードも速いので取り入れることができれば便利です。

【図11】ChatGPTへの聞き方も少し工夫がいりますが…


◆テンプレートファイルを活用する

Excelファイルに書式を設定したテンプレートファイルを用意しておき、WinActorには実データをテンプレートファイルへ貼り付けることと、ファイルを別名で保存することだけをさせる、という方法もあります。

例えば、集計業務でよく使う機能にピボットテーブルがあります。範囲を選択するだけで項目ごとの合計数などを簡単に集計できる便利な機能ですが、WinActorに一から設定させるのは得策ではありません。ピボットテーブルのフィールドで項目を選択して「列」フィールドや「行」フィールドへドラッグ&ドロップする操作がWinActorは苦手なのです。

【図12】できないことはないけれど

そこで、ピボットテーブル自体は人の手であらかじめテンプレートファイルに設定しておき、元データの貼り付けとピボットテーブルの更新をWinActorに実行させるようにします。それならドラッグ&ドロップの操作は不要ですし、設定・検証にかかる時間も実行時間も短縮できます。

また、複数ファイルの値の合算値を最終的な転記先へ入力するような場合にもテンプレートファイルの活用は有効です。

【図13】複数の転記元から取得した値の合算値を転記先へ入力したい

作業用のファイルに○○社、△△社、●●社の各シートを作成しておき、届いた発注書のデータを各社のシートへ貼り付けると、合算シートに合計金額が表示されるようにしておきます。WinActorの作業は各社シートへのデータの更新(貼り付け)と、合算シートから合計金額の値を取得して転記先へ入力する工程のみなので、とてもシンプルなシナリオにすることができますね。

※gif動画【図14】3社間でフォーマットが違っていても問題なし!


テンプレートファイルの活用といえば、コード一覧や取引先一覧などのマスタファイルもあります。
自分の頭の中にあり、わざわざ資料を見る必要のない情報もRPA化するときにデジタルデータとして必要になることがあります。

例としてコードや取引先名について考えてみます。
パターンが少ない、もしくは固定値であれば、変数の初期値やノードのプロパティに設定してしまうという方法もありますが、組織変更があれば組織コードは変わるかもしれませんし、取引先も増減すれば更新作業は必須です。そういった変化が起きた時もWinActorでのメンテナンス作業は最小限にしたいですよね。
そこでWinActorでの作業のために新しいファイルを用意して、開発や実行をスムーズに処理できるようにします。

【図15】頭に入っている情報もデジタルデータ化する

マスタファイルの場合「どこにも存在しないので人の手で一から作成する」場合と「システムから出力できる」場合があります。
更にシステムから出力できる場合は、シナリオ内で出力もさせるのか、手動で出力・更新しておくことを前提にシナリオ内では出力まではおこなわないのかも決めることができますね。
前者の場合、更新忘れを防ぐことができますが、毎回出力をおこなうのでその工程の開発にも実行にもある程度の時間がかかることが考えられます。後者の場合はシナリオ作成・実行時間は短縮できますが、人がメンテナンスを忘れるとシナリオが正しく動作できないことに繋がる点は要注意です。


このように、RPA化を考えるときに全てをRPA(WinActor)でさせようとするのではなく、人とRPAとExcel(ツール)のハイブリッド、つまりそれぞれが得意なことを担当するという考え方で進めていただくと、開発をよりスムーズに進めることができます。シナリオ開発前にExcelの機能や設定で簡単にできる方法がないかをぜひ一度考えてみてください🎵

とはいえ考えて行き詰ったらとりあえず手を動かしてみるのも大切です



4.おわりに

いかがでしょうか。
今回は開発・メンテナンスの手間を省くことに関する内容にスポットを当ててみました。最初に人の手で準備をおこなうことで、RPAでの開発時間、実行時間、メンテナンスが短縮できたり簡略化できることもありますのでぜひ今後の参考にしていただけたらと思います🎵

最後までお読みいただきありがとうございました!
また次回お楽しみに🎵

▼エンジニアにWinActorやkintoneのことを相談したい方はこちら!

▼RPAやWinActorのお役立ち情報はこちらにも!


この記事が参加している募集

最後まで読んでいただきありがとう御座います!Works ID_DXサイトも是非ご覧ください👍!