Automation Anywhere A2019で四則演算や数学関数による演算を行うには
Automation Anywhere v11.xを知っている人は、v11.xにおける変数は型がなく、Variable Operationコマンドダイアログボックスのテキストボックスの中で簡単な四則演算ができたので、A2019ではどうなったのかと気になる人もいると思います。A2019ではどうなっているかについてみていきましょう。
環境
- Automation Anywhere A2019.14 (ビルド5322)
A2019における文字列型と数字型の変換
A2019では変数型が導入され、文字列型と数字型は別々になってしまったため、両者の型の間の変換は新しく導入されたパッケージを使います。以下のようなパッケージが利用できます。
しかし、文字列型の変数の中身にv11.xのような式を「代入」しても、処理されず文字列のまま残ったままです。また「数字」パッケージで利用できる演算は足し算、引き算のみです。では、A2019ではどのように四則演算や数学演算を行えばいいか見ていきましょう。
四則演算
1. 数字フィールド内でのインライン四則演算
まずは標準的なやり方を見てみます。今回のお題はv11のVariable Operationで $2(x^2+3x)+1$ を実行したのと同じ値を得ることです。($x$にはあらかじめ$3$を代入しておく)
実は「アクションの詳細」ウィンドウの中の数字フィールド (「#」が先頭についたフィールド)では、数字や変数を指定するほかに、四則演算の数式も指定することができます。これによりインラインで四則演算が可能です。
実行結果:
$x=3$ の場合、$2(x^2+3x)+1=37$ なので、正しい値が返ってきているのがわかります。
2. 外部スクリプトを使う
2番目の方法として、A2019からVBScript/JavaScript/Pythonによるインラインスクリプトが簡単にできるようになったので、これを使います。(Pythonを使うには別途Pythonのランタイム環境をローカルPCにセットアップする必要あり)
A2019での解法に、お手軽なVBScriptを使ってみます。
Function Calc(x)
Calc = 2*(x*x+3*x)+1
End Function
ロジックのVBScriptは、「VBScript: 開く」アクションの中に貼り付けます。
実行結果:
$x=3$ の場合、$2(x^2+3x)+1=37$ なので、正しい値が返ってきているのがわかります。演算自体はVBScriptにやらせているわけです。
3. 型キャスト「LegacyAutomation:parseVariableOperation」を活用する
3番目の方法ですが、実はv11で作成したBotを移行ツールでA2019に移行するとやり方がわかります。これは標準機能だけで実装可能です。
すると、以下のようなBotとなります。
赤枠で囲われた部分は「型キャスト」と呼ばれる、A2019から新しく導入された概念です。このLegacyAutomation:parseVariableOperation
は、次のような説明がついています。
10.x、11.xのVariable Operationコマンドと同様の式解析をします。新しく作成するBotでは使わないでください。
つまり、これを使うと、$x$
にv11と同様数式の含まれた文字列を入れておくと、$x.LegacyAutomation:parseVariableOperation$
は解析された結果をあらわすことになります。「新しく作成するBotでは使わないでください。」とのことですが、これは便利なので使いたいところです...
4. Bot StoreのMath (数学) パッケージを使う
2020年8月7日にBot StoreでリリースされたMath (数学)パッケージを使うと、さらにさまざまな高度な計算ができて便利です。これは https://mathjs.org のエンジンを使って数式の解析をしています。
特徴は、セミコロンで区切って前提となる定義をいくつも式で書けること、変数を独自に定義しておける事、そしてAutomation Anywhereの変数もきちんと差し込めること、です。上の例だと、インラインで $y=2$と定義しており、あらかじめAutomation Anywhereで定義してある変数 $x$
では$x=3$となっているため、この例だと$3+3+2=8$が結果として返ります。また、数学でよく使われる定数や関数も使えます。(大文字、小文字を区別します)
数学関数の演算
1. VBScriptを呼び出す
VBScriptの関数を使います。ただし、Round関数は四捨五入ではなく銀行型丸め処理を行う1ということで、正確な計算にはRound関数を使わずに自作する必要があります。
切り上げ/切り捨て/四捨五入
切り上げ
Function Calc(x)
Calc = Int(Abs(x) * -1) * (Sgn(x) * -1)
End Function
切り捨て
Function Calc(x)
Calc = Fix(x)
End Function
四捨五入
Function Calc(x)
Calc =Fix(x + (0.5 * Sgn(x)))
End Function
絶対値
Function Calc(x)
Calc = Abs(x)
End Function
大きいほう、小さいほう (min, max)
Max
Function Calc(x,y)
If x > y then
Calc = x
Else
Calc = y
End If
End Function
Min
Function Calc(x,y)
If x < y then
Calc = x
Else
Calc = y
End If
End Function
平方根
Function Calc(x)
Calc = Sqr(x)
End Function
累乗
Function Calc(x)
Calc = x*x
End Function
三角関数 (sin, cos, tan)
Sin
Function Calc(x)
Calc = Sin(x)
End Function
Cos
Function Calc(x)
Calc = Cos(x)
End Function
Tan
Function Calc(x)
Calc = Tan(x)
End Function
その他の超越関数
三角関数等からの演算で計算できます。詳しくは以下を参照してください。
- 超越関数 -VBScript リファレンス
2. Math (数学)パッケージを使う
上記で挙がったような数学関数は標準で持っていますので、アクションの詳細パネルのフィールドでインラインで数式の一部として記載するだけで使うことができます。数学でよく使われる定数や関数、行列などが使えます。(大文字、小文字を区別します)
上記のリファレンスの中でmath.sin()
という関数になっているものは、単にsin()
と記載すればOKです。以下に例を挙げます。
切り上げ
ceil()
切り捨て
floor()
四捨五入
round()
絶対値
abs()
大きいほう、小さいほう (min, max)
min(a,b,c,...)
max(a,b,c,...)
平方根
sqrt()
累乗
x^y
or pow(x,y)
三角関数 (sin, cos, tan)
sin()
cos()
tan()
-
数値を丸める(四捨五入) - VBS Tips、切り上げ・四捨五入を正しく行う、などを参照。 ↩
Author And Source
この問題について(Automation Anywhere A2019で四則演算や数学関数による演算を行うには), 我々は、より多くの情報をここで見つけました https://qiita.com/RPAbot/items/8daba3de0c0bf1918ab8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .