Mutable_Yunの業務改善ブログ

VBA勉強中の非エンジニア会社員向けのブログです。業務改善についても触れています。

無料で使えるRPA | RPA Express(Workfusion Studio)の使い方⑤ カスタムアクション

売上実績データを処理する事を題材にRPA Expressの使い方を学んでいきます。今回はRPA Express(Workfusion Studio)でアクションライブラリに存在しない計算をする、「カスタムアクション」の使い方について解説します。初めてRPA Expressを操作する方はまず、エクセルに値を書き込む方法の記事から読み進めていくことをオススメしたいと思います。

目次

今回やりたいこと

売上実績データを処理します。売上実績データはデスクトップに保存されており、下の絵の様になっています。

売上実績データの絵
売上実績データの絵

前回までの流れ

前回までで下記の流れで進めてきました。

  1. デスクトップに保存されている「売上実績データ.xlsx」のエクセルを開いた
  2. F1セルに「売上データ」という文字列を記入した:RPAでエクセルに書き込む
  3. エクセルからセルの値を取得した:RPAでエクセルのセルの値を取得する
  4. 取得した値の型を変換した:RPA 値の型変換

これらを通して、アクションをブロックのように積んでいくことでアクションフローを作っていく事や、変数、変数の型と言った概念について学んできました。不安な人は一度戻って復習したり、何度も繰り返して理解しましょう。そして、何より手を動かして、自分で作ってみることが一番です。それでは今回の内容に移っていきましょう。

今回は売上高を求める為に販売単価と販売実績をかけ算する部分を作成します。

Custom Actionsで自分独自のアクションを作る

販売単価と販売実績をかけ算をして売上高を求めたいのですが、Action Libraryを探しても、そのような計算のアクションは存在しません。なければ自分で作ってしまえばいい!と言う発想です。そこで自分独自の計算を行うアクションを作成します。これがカスタムアクションです。

カスタムアクションの作成に必要な変数を確認しておきます。前回までの解説ですでに必要なデータを入れるための変数は用意済みの状態です。

現時点でのRecorder Variables。売上高の計算に必要な変数は全て揃っている
現時点でのRecorder Variables。売上高の計算に必要な変数は全て揃っている

それでは、カスタムアクションを作成していきましょう。

独自の計算を自作するカスタムアクションを作成する

Action Libraryの一番下にあるCustom Actionsを選択してScriptをダブルクリックします。

Action LibraryからCustom Scriptを選択する画像
Action LibraryからCustom Scriptを選択する

すると、「Script」というアクションがAction Flowに追加され、スクリプトを記述するためのウィンドウが右端に表示されます。

「Script」が値の型変換のアクションの下に挿入されたところの画面
「Script」が値の型変換のアクションの下に挿入されたところ


右端のScript Name:の所に分かりやすい名前を英語でつけます。売上高の計算と言う事が分かる様に「amount calc」という名前をつけました。同時にAction Flowに記載されている「Script」が「Script (amount calc)」に変わりました。親切!

次にかけ算する中身を作ります。下記をコピーしてScriptに貼り付けて下さい。

@CustomScriptAction(
	input = ['price_num','quantity_num'],
	output = 'sales_amount'
)

def customScript(){
	def sales_amount = price_num * quantity_num;
}

これで計算する本体部分ができました。Scriptの中に書いたプログラムの詳しい解説は『プログラミングフリー』なので省略します*1ここで深入りしてつまづかない事の方が大事です!

簡単に押さえるべき流れだけ説明します。@CustomScriptActionの中にinputとoutputと書かれています。inputの=の右側に、自分で宣言したprice_numとquantity_numが記述されています。この2つの変数を受け取ると言う意味です。

outputの所にsales_amountと書かれています。これは後ほどresultとしてかけ算をしてそのresultの値を文字通りアウトプットする、と言う事です。ここで使うために宣言したんですね。

def customScriptの所に今回の目的のかけ算が書かれています。かけ算の結果をresultに入れていると言う訳です。プログラムの中に出てくる()、[]、{}やdefの意味は今はスルーして構いません

Set Cell Value(F1)で「売上高」の文字列をF1セルに記入したところで,動作確認の為に挿入したSave Spreadsheetアクションは消しておきましょう。スクリプトを記述(コピペ可)した時点で、このようになっています。

スクリプトを挿入したところまでの図。
スクリプトを挿入したところまで。Scriptアクションがエクセルのインデントの外にある

ここで、今回のメインであるカスタムアクションのScriptアクションの挿入が完了しました。

カスタムアクションのScriptアクションの注意点

よく見ると、最後に挿入したScriptアクションがOpenSpreadsheetアクションのインデントの外に出ています。段落のような一字下げがなくなっていますよね。これは、Scriptアクションがこの一連のエクセルの作業の外で行われるためです。よって。この結果をエクセルないに書き込む為には、もう一度、OpenSpreadsheetアクションを挿入する必要があります。この点に気をつけて仕上げに入ります。

注意点に気をつけて仕上げる

カスタムアクションがOpenSpreadsheetアクションのインデントの外に出ていることが注意点でした。一旦エクセル作業が中断しているので、もう一度Open Spreadsheetアクションで操作するファイルを指定して作業を売上高を書き込む必要があります。このOpen Spreadsheetアクションはエクセルアプリケーションを起動しないため、手作業でエクセルブックを開いたり閉じたりするような遅さはありません。

操作するエクセルを指定して、値を書き込み、保存した図
操作するエクセルを指定して、値を書き込み、保存した

値をセルに書き込むためにはSet Cell Valueアクションを使うのでした。

Set Cell Valueアクションの設定の画面
Set Cell Valueアクションの設定
座標なのでCoordinates、F2に書き込みます。入力した値はカスタムアクションのScriptアクションで求めたsales_amountと言う変数に入っていますので、これを選択します。

最後に保存するSave Spreadsheetアクションを挿入してできあがりです!

実行結果の絵
実行結果。F2に無事にC2とD2の値のかけ算が入力されている

やっと一つのセルのかけ算が終わりました。これを何度も記述するわけに行かないので、繰り返し構文を使って最後の行まで繰り返すことで、売り上げ実績ファイルの集計作業を進めていきます。

今後の流れ

  1. 売り上げ実績データのエクセルブックを開く
  2. 売上高の文字列をセルに書き込む
  3. C2とD2の値を取得する
  4. 値を数値に変換する 
  5. 販売単価×販売実績を求めてセルに書き込む ←今回、ここが完了した
  6. 繰り返し構文について学ぶ
  7. 繰り返し構文を使って売上データのかけ算を完成させる
  8. イレギュラーに備えて完成度を高める
  9. メンテナンス性を高めて自分だけの便利ツールから部門で使えるようにする
  10. メンテナンス性まで考えてたRPAを作る上で、効率の良いスクリプトの作り方


*1:本格的に処理を作り込むにはこの、Custom ActionsをScriptで作り込む必要があります。全然プログラミングフリーじゃありません。やりたい方はGroovyというプログラミング言語を勉強してみましょう。