BizRobo!のセル値抽出ステップでエラーになる～数値を抽出コンバータ～

就業先では、RPAツールのBizRobo!を使用しています。BizRobo!開発で悩み、BizRobo!ナレッジベースで日々検索しています。

Excelファイルから値を抽出することは、RPAではよくあるケースです。
BizRobo!では、「セル値抽出(Extract Cell)」ステップを用いて、Excelファイルから抽出します。
しかし、そのステップ内にある「数値を抽出」コンバータの使用方法を間違えるとエラーになってしまいます。
今回は、「数値を抽出」コンバータを利用して、変数から数値を抽出する際のエラーについて、共有いたします。

※時間が経過して変わってしまった箇所や間違っている箇所、不適切な表現があるかもしれませんが、その時は都度修正いたしますので、ご指摘いただけると幸いです。


## 私の就業先で出くわした事象
私の就業先で出くわした事象を例え話で説明します。

:::note info
株式会社TBOの経理部門のお話です。
経理部には様々な申請があり、その中に子会社に関わる申請もあります。経理部に関わる申請は、ServiceNowで行いますが、入力ミスを防ぐために、申請の下書きをRPAで行っています。
入力データの元は、Excelに記載されています。ExcelのG列には、数値が必ず入っていなければいけないのですが、空白や文字列が入ってしまったため、セル値抽出を行う箇所でエラーになりました。
:::

過去に開発されたBizRobo!のRPAでしたが、エラーハンドリングが正しく組み込まれていませんでした。今回原因を調査した際、BizRobo!ナレッジベースの下記URLが該当しました。
[「数値を抽出」ステップで変数から数値を抽出する際に、入力から数値を抽出できませんとのエラーが発生します](https://knowledge.bizrobo.com/hc/ja/articles/360053176451)


<strong>詳細に解説します。</strong>
エラー発生個所箇所は、「セル値抽出(Extract Cell)」ステップになります。そのステップ内のコンバータで「数値を抽出」を使用している時にエラーになるケースがあります。
<img width="80%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/b253507b-e4b8-0e4f-993a-d0389308beac.png">

「数値を抽出」コンバータは、¥1,234,000,020のような通貨形式の数字でも対応可能です。
<img width="80%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/f7fe52e9-667b-b034-44e2-ef5f6e08363c.png">

下記のようなExcelファイルがあると仮定します。金額と書いてあるC列を見てください。
C2のように、値段が書いてある場合は、エラーは発生しません。
C3やC4のように、空白や文字列がある場合に、エラーが発生します。
<img width="80%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/bf2efb46-a2f2-bbdc-4ef6-30acf29f5060.png">

発生するエラーは、下記の通りです。
<img width="80%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/4f93586c-4c37-d496-c573-e9e4f078f8b1.png">

今まで説明したことは、下記URLに記載してあります。
[「数値を抽出」ステップで変数から数値を抽出する際に、入力から数値を抽出できませんとのエラーが発生します](https://knowledge.bizrobo.com/hc/ja/articles/360053176451)
つまり、「セル値抽出(Extract Cell)」ステップ内の「数値を抽出」コンバータの使用している際に、数値以外の文字列や空白の場合に、エラーになることが書かれておりました。


## 私が対応した方法
今回のエラーを解消する方法で思いついた方法は、2つありました。

<strong>①「抽出」＞「高度な抽出」コンバータを利用する</strong>
先ほど紹介したURLに書いてある方法となります。
数値のパターンが決まっている場合は、効果的だと考えています。
通貨のように、¥1,234,000,020と不規則なパターンの場合、適用するのが難しいと考えています。
<img width="80%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/b7db2c42-a7b8-dcd0-18f6-d4a6b6999090.png">


<strong>②「数値を抽出」コンバータのまま、エラーとしてログ記録のチェックを外す</strong>
通貨のように、¥1,234,000,020と不規則なパターンの場合、①を適用するのは難しいです。通貨の場合は、「数値を抽出」コンバータのままの方が都合がいいです。
その場合、「エラーとしてログ記録」のチェックを外し、「Then」の選択肢を「次の代替手段を試行」か「無視して続行」を選択する方法もあります。
<img width="80%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/a32fcfc4-7593-d322-254c-f4742f4d21c1.png">

上記方法は、エラーがでても、無視して、後続処理を進める方法になります。数値以外の文字列や値が空白の場合、変数にはNullが入ります。
この場合、「テスト」ステップを利用すれば、エラー時にログを出力するようなロジックを組むことも可能です。
しかし、空白の時も数値以外の文字列の時も、どちらも変数にはNullが格納されるため、空白か文字列か判断したいときは向きません。

今回の改修では、下記理由から②で対応することにしました。
・ユーザーと要件を確認した際に数値とNullが入る可能性はあるが、文字列が入らないことが判明した。
・¥1,234,000,020のように通貨形式で出力されるため、パターンを定めることが難しい。


## 最後に
下記のエラーについて、共有しました。
[「数値を抽出」ステップで変数から数値を抽出する際に、入力から数値を抽出できませんとのエラーが発生します](https://knowledge.bizrobo.com/hc/ja/articles/360053176451)

RPAで初めてエラーに出くわした時は、こういうエラーが出るのはなぜだろうと検討もつきませんでした。ナレッジベースに書いてあったので、助かりました。BizRobo!で不明点が出てきた時は、BizRobo!ナレッジベースとBizRobo! LAND Communityはとても有効だなと感じました。

今回の記事が、RPA開発で悩んでいる人の為になれば幸いです。