Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

IQ Bot のカスタムロジック 基本のキ

こんにちは。

昨日こちらの記事でご紹介したAutomation AnywhereのIQ Botですが・・・

11.3.3というバージョン以降、読み取り結果に対して、
Pythonというプログラミング言語を使ってちょっとした加工ができるようになりました。

Automation Anywhereの用語では、これを「カスタムロジック」と言っています。

2020年4月3日現在の情報によると、
A2019のクラウド版にくっついているIQ Botではカスタムロジックは使えないのですが、
A2019のオンプレやV11系統のバージョンでは使えます。

カスタムロジックはどんなときに使う?

そもそもカスタムロジックってどんなときに使うんですか?

という質問に対して、答えは色々ありますが、以下に例を挙げてみます。

パターン 具体例
パターンの決まった文字化けの修正 ・東京棘問題(東京が「棘」として読み込まれるというOCRあるある)の修正
・YY年MM月DD日の「日」がBや0に化ける問題(これもOCRあるある)の修正
読み取り結果からほしい要素だけを取り出す ・「お支払金額は123円になります」から金額の123だけを取り出す
・「あいう銀行かきく支店」から支店名だけを取り出す
・1000mgから単位のmgだけを抽出
固定値の代入 当該グループ(※)に対して値が一意に決まる場合は、固定値を入れてしまう
形式の適用 YYYY年MM月DD日をYYYY/MM/DDに直す

単純にOCRで結果を読み取るだけだと、後続処理のデータとしては汚すぎて使えない・・・

という場合に、カスタムロジックでちょこっといじってあげると、きれいなデータができたりします。

カスタムロジックはどう使う?

フィールド項目とテーブル項目で若干使い方が違うのでそれぞれ説明します。

フィールド項目

フィールド項目のカスタムロジックはどこで書ける?

カスタムロジックは、IQ Botのマッピング設定画面で書くことができます。
下図の「JA-JP:LOGIC」と書いてあるタブをクリックして・・・ (※画面を開いてもタブがない!という場合はカスタムロジックの有効化を行います)

フィールド_ロジックのありか.jpg

こんなかんじ↓でロジックを定義していきます。
フィールド_コード例.jpg

フィールド項目のカスタムロジックはどう書く?

フィールド項目の場合、ひとつひとつの項目に対してそれぞれカスタムロジックを適用できます。

読み取った素の値がfield_valueという変数に入っているので、それをいじくって加工します。

フィールド項目へのカスタムロジック適用例:固定値代入の場合
field_value = "代入したい値"

こんなかんじです。

フィールド項目は、単純な文字列操作なのでかなりシンプル。
追々、便利なコピペ用コードを公開していきたいと思います。

テーブル項目

テーブル項目のカスタムロジックはどこで書ける?

テーブル項目の場合、ひとつひとつの項目を見てもロジックの入力欄がありません。
テーブル_各項目ごとにはない.jpg

かわりに、テーブル全体の設定をするエリアのここ↓からロジックを設定できます。
テーブル_ここにある.jpg

上記の「Ja-JP:Logic」を開いて、こんな感じ↓でロジックを書いていきます。
テーブル_こんなかんじ.jpg

テーブル項目のカスタムロジックはどう書く?

テーブル項目の場合、テーブル全体の内容がtable_valueという変数に入っています。
このtable_valueは、データフレームという特殊な型に入っていて、扱うときにちょっとしたお約束があります。

それがこちら↓

テーブル項目へのカスタムロジックの書き方
#表の操作をするときに必ず入れるコード(最初)
import pandas as pd
df = pd.DataFrame(table_values)

#
# この間の部分に、処理したいコードを入れていく
#

#表の操作をするときに必ず入れるコード(最後)
table_values = df.to_dict()

上記のコードを、個人的には「おまじないコード」と読んでいます。

おまじないコードが何をやっている処理なのか、
気になる方のために解説記事も書きましたが、

「テーブル項目を処理する場合は、最初と最後におまじないコードをつける」という点さえ押さえておけば、
上記の記事はスルーしても大丈夫です。

テーブル項目は、処理コードの部分にもちょっとしたお約束があって、
Pandasに慣れてない人(※)はけっこう迷ったりすることも多いと思います。

# ※白状します。それは私です・・・

そんなわけで、今後しばらく私のQiitaコンテンツでは、
テーブル項目まわりの便利コード(IQ Bot触ってて迷ったり調べたりしたやつ)を
紹介していこうと思います!

まとめ

  • IQ Botでは、読み取り結果をカスタムロジックで加工することで、後続の自動処理に耐えうる品質のデータを作れるよ
  • カスタムロジックは、フィールド項目とテーブル項目で適用できる範囲が違うよ
  • フィールド項目の場合は、field_valueにという変数に格納された素の読み取り結果を加工するだけなので楽勝だよ
  • テーブル項目の場合は、table_valueにという変数にデータフレームとして格納されたテーブル全体を処理するので、Pandasに慣れてない人には若干ハードル高めかも
  • そんなわけで、今後はテーブル項目に対するカスタムロジックのチートシート的なのを公開していくよ

では!

IQ_Bocchi
金融SEを経て、某企業にてAutomation Anywhere の IQ Bot という製品を触ることになったエンジニアです。 自分自身の備忘も兼ねて、IQ Botや関連技術の情報を公開していきます。 IQ Botに関する質問をTwitterでいただければ、TwitterかQiitaでお答えします。 https://twitter.com/IQ_Bocchi
https://twitter.com/IQ_Bocchi
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away