はじめに
弊社は、製造業のお客様向けにERPパッケージを開発・提供している企業です。私自身は製品を開発するエンジニアではなく、導入いただいた製品を通じてお客様の成功を支援する「カスタマーサクセス部門」のメンバーとして活動しています。
本記事では、そんな「非エンジニア」の私が、部門の課題解決のためにRPA(Power Automate Desktop)を活用してヘルススコアの集計システムを構築した事例をご紹介します。
『お客様との関係性を見える化するためにヘルススコアを導入しました(設計編)』で触れた構想を実際にどう形にしたのか、構築中に直面したRPAのリアルな課題とその解決策を中心にお伝えできればと思います。
ヘルススコアの具体的な説明や考え方については こちら の記事をご確認ください。
全体概要と利用ツール
ヘルススコアデータを作成するため、各種データをダウンロードして、集計加工したものをヘルススコアのアプリにアップロードしています。図にすると次のとおりです。
これを全自動で行うために下記4つのツールを使用しています。
①基盤となるローコードノーコードツール
弊社が管理したい情報ごとにそれぞれアプリを作成しています。例えば、以下のような情報をアプリごとに分けて管理しています。
- お客様情報
- コンタクト履歴(直接面談した時の情報)
- メール配信履歴
- イベント情報(いつ、どこで、どんな、誰が参加したか、アンケート結果などを管理)
②RPA(Power Automate Desktop, 以下 PAD)
ダウンロード、集計・加工、アップロードを自動化するためRPAを利用しています。
③Excel(Office365)
データ作成をする上で集計、加工作業が必要となるために使用しています。
また、最終的な結果をグラフ化し、ファイルURLをノーコードローコードのツールに紐づけることで可視化しています。
PADで全自動化を目指して感じたこと
本件で初めてRPA(PAD含め)を使用しました。思っていたよりも多くのアクションが用意されていて、それなりに動いてくれるなと感じました。
しかしながら、すべての操作をPAD内で表現するのは厳しいと判断しました。その理由は次のとおりです。
補足
本件では、属人的になりにくいよう、PADの基本的なアクションのみを使用し、複雑なカスタムスクリプトや式(例: Power Fx)の利用は避ける方針としました。
アクションの数が膨大になり、やりたいことを作成しようとすると時間がかかる
例えば「ダウンロードしたファイルのデータを他のエクセルに貼り付ける」をPADで実現しようとすると、以下の9つのアクションの設定が必要になります。
- Excelの起動(ダウンロードしたファイルを開く)
- 空のセルを取得(末行の位置を確認)
- 列の最終が可変の場合、最終列についても取得の必要あり
- 変数を小さくする(②では末行+1の値を得てしまうので-1する)
- Excelワークシートから読み取る(データをコピー)
- ショートカットキー(Ctrl+AとCtrl+C)を使えば多少簡易的になりますが、確実性を取るならこちらの方が安全な気がします
- Excelを閉じる(ダウンロードファイルを閉じる)
- Excelの起動(貼り付け先のファイルを開く)
- アクティブなExcelワークシートの設定(貼り付けるシートを表示)
- Excelワークシートに書き込む(データを貼り付け)
- Excelを閉じる(保存設定して閉じる)
この例の場合は共通処理として作成してしまえばよいですが、Excelの中で細かい作業を実施するとなると共通化できない上に、アクション数は比べ物にならないくらい増えそうです。
細かい作業となるとコーディングするのも大変ですが、PADではアクション一つ一つを選択して、その中で設定を選択・記入する必要があるのでさらに大変です。
安定性に課題がある。アクションを増やすと不具合のリスクがあがる
RPAツール全般に共通する課題として、同じフローであっても失敗することがあります。これはPADに限らず、他のRPAツールでも一般的に発生する現象です
例えばExcelでの細かい作業を実施しようとした場合、一つのキー操作がうまく実施されなかったら、その後のすべての処理が空回りしてしまいます。キー操作が増えれば増えるほどその確率が増えることになります。
集計にピボットテーブルを活用したいがPADにはピボットテーブルを操作するアクションが用意されていない
今回の要件ではダウンロードしたデータの集計が必須ですが、PADの中での集計は正直厳しいかなといった印象です。(できなくはないけど時間がかかる)
PADの適用範囲について
以上のことを踏まえると、PADは以下のような環境・用途に向いていると思います。
- ソフトウェア技術者がいない環境で、かつ単純作業を自動化させる場合
ソフトウェア技術者が複数名いるのであれば、プログラムを作成してしまった方がメンテナンスしやすいかもしれません。また、複雑な作業や細かい作業については、他の方法で検討した方が良いと思います。
PADを使用した結果、以下の方針でヘルススコアを構築することにしました。
ブラウザ操作はキー操作を活用する
PADでは画像認識を用いたアクションが用意されているので、当初はこれらを活用しようと考えていました。
しかし、画像認識を用いたアクションは、画面のレイアウト変更などにより、設定時には正常に動作していたのに、しばらくするとエラーになることがあります。これはRPAツール全般に共通する課題です。
この場合、再度対象の画像を設定し直したりする必要があり、エラーが発生するたびに修正が必要になるので手離れが悪いと考えました。
そこで、[Tab]や[Enter]などのキー操作をアクションとして発生させたところ、こちらの方が安定的に動いたため、キー操作を活用することに決めました。
Excelのマスタファイルを作成する
ヘルススコアデータを構築する上で、ダウンロードしたデータの加工・集計は必須事項です。しかしながら、前述した通りPADで表現するのは現実的でないため、Excelでマスタファイルを作成することにしました。
加工・集計を都度アクションとして実行するのではなく、予め関数の記載・ピボットテーブルの作成をしたファイルを用意して、ヘルススコアデータを作成するタイミングで以下の手順を実行するだけでアップロード用のデータが作成されるようにしました。
- マスタファイルをコピー
- ダウンロードしたデータを貼り付け
- セルのコピー(数式を末行まで反映させるため)
- ピボットテーブルの更新
属人化を防ぐためVBAは使用しない
弊部はソフトウェア開発をする部署ではないので、メンテナンス性をあげるためVBAは利用しないようにしました。
PADでは、できるだけ単純作業のみ処理をさせる
PADの安定性という点で少し課題を感じたので、基本的には以下の作業のみ実施させるようにしました。
- 各種データのダウンロード
- ファイル操作(コピー、開く、保存、閉じる)
- データコピー、貼り付け
- セル(数式)のコピー、貼り付け
- ピボットテーブルの更新(ショートカットキーで実行)
- データのアップデート
マスターファイルの作成
上記方針に則って、まずはマスターファイルから作成していきます。最終的に作り上げていきたいデータに対して、どのツール・アプリの何の項目を使うかを考えます。
ダウンロードした値をそのまま活用できれば楽ですが、そうもいかないので関数を用いながらデータを加工・集計します。
少し話がそれますが、最近のExcelはより便利になったなと感じます。今回もFILTER関数、SORTBY関数、XLOOKUP関数など昔はなかった関数を利用しています。
例えば「最後に参加したイベントの日付」を取得するときも、SORTBYで降順に並び替えすれば簡単に取得できます。もちろん手動での並び替えは昔からできますが、今回の要件では「PADは単純作業のみ実施させる」なので、関数でできることは関数で実施しています。
ちなみにSORTBY関数は以下のように指定します。
SORTBY(並び替え範囲, キーとなる列1, 順序1(昇順か降順か), キーとなる列2, 順序2)
具体的には以下のように設定します。
SORTBY( A1:C100, B1:B100, 1, C1:C100, -1 )
これはA列~C列の値をB列昇順、C列降順の順に並び替えする例となっています。
PADのフロー作成
マスタファイル作成後、PADのフローを作成していきます。PADの処理では、各アプリからデータダウンロードする部分など共通化できる部分は共通フローを作成しています。
ソフトウェア開発と同様で、共通フローにすることで不具合が発生した時の修正範囲を少なくできます。
フローを一通り作成したら、最後に正常終了したかどうかがわかるようにログを出力させます。すべて成功したらメール送信するようにしても良いと思いますが、しばらくは確実に処理させることを意識してログ出力して確認するようにします。
編集後記
ひとまずヘルススコアデータの作成については自動化できましたが、今後はさらに分析の精度を高めるため、データの内容を継続的に改善していく予定です。
ブラッシュアップを随時行うにはメンテナンス性は高くしたいです。そういった意味でもExcelでマスタファイルを作成した点は良かったと考えています。
PADのフローを編集するのではなく、マスターファイルを編集すれば良いという点は、データ加工の観点から自由度を高められていると実感しています。

