WinActorシナリオ作成の基礎:勤務表(Excel)に登録された作業工数をシステムに登録する

システム外(Excelや勤怠ツール)で勤怠(工数)管理をしているけれど、プロジェクトの収支管理は基幹システムで行っていて、月次でシステム外の勤怠(工数)情報を基幹システムに転記する作業が発生している…こんなことはありませんか?

「システム外で管理している情報を定期的にシステムへ転記する」といった定型作業は、勤務表の管理に限らず、よく発生する類の作業かと思います。このような定型業務の自動化を実現する一手段として、WinActorを活用できます。

本記事では、WinActorでシステム外の情報をシステムに転記する方法のサンプルとして、「勤務表(Excel)に登録された作業工数をシステムに登録する」シナリオの作成方法を紹介します。

今回は勤務表(Excel)から、当社開発のプロジェクト管理に特化したERPシステム『MA-EYES(エムエーアイズ)』に、月次で作業工数を転記するシナリオです。各社で利用されているツールは様々なので、あくまで参考情報としてお使いのツールに置き換えながらお読みください。

 

シナリオの流れ

本シナリオの大まかな流れは、こちらです。

  1. Chromeを起動する
  2. システムにログインする
  3. システムの入力画面(作業実績入力)を呼び出す
  4. 勤務表の情報をもとに、システムの必要事項を登録する
  5. 参加しているプロジェクト情報をシステムに登録する
  6. プロジェクト毎の工数情報をシステムに登録する

 

MA-EYESはウェブブラウザで動作するシステムのため、まずはChromeを起動させます。ChromeからMA-EYESにログインした後、作業実績入力画面(プロジェクト毎の作業工数を、ユーザが日次で入力する画面です)を呼び出します。ここではプロジェクト毎の工数実績を登録していくため、転記する前に勤務表(Excel)からプロジェクトコード情報と作業工数情報を読み取ります。最後に、読み取った情報を作業実績入力画面の指定の入力欄に転記していきます。

なお1と2に関してはWinActorシナリオ作成の基礎:ChromeでWEBページのXpathを取得し、WEBページにログインするに記載していますので、本記事では3以降の作成方法を紹介します。

 

本シナリオの全体フロー図はこちらです。※全体図は、切り離して2列で表示しています。

また、本シナリオで使用する変数の一覧はこちらです。

シナリオの作成手順

システムの入力画面(作業実績入力)を呼び出す

MA-EYESには、使用したい画面を呼び出す際に便利な検索機能があります。作業工数の入力をする画面である「作業実績入力」の画面を呼び出すために、検索フォームに「作業実績」と入力する部品を作ります。

フローは、こちらです。

ノード「クリップボード」を利用し、“クリップボードへ値を設定”で検索ワード(今回は「作業実績」)を固定の値として設定します。その後、画像マッチングを利用し、MA-EYESの検索フォームをクリックする部品、エミュレーションを利用し、固定の値を貼り付ける部品を設定します。最後に、上記動作によりMA-EYES上に表示される「作業実績入力」の文字を、画像マッチングを利用しクリックする部品を設定し、「作業実績入力画面」を表示するまでのフローを完成させます。

 

勤務表の情報をもとに、システム上の必要事項を登録する

本シナリオに使用する勤務表のフォーマットはこちらです。

対象年はA14の位置、対象月はC14の位置に記載され、日付、曜日、始業時間、終業時間等の項目が16行目、プロジェクトコードの値は17行目に記載されています。工数は日毎、プロジェクト毎に登録されています(この情報をシステムに転記していくことが目標です)。A50の位置には「合計」の項目があり、プロジェクトコード列の最終行に、日々の作業工数から割り出されたプロジェクト毎の合計作業工数が記載されています。

 

まず、ライブラリ「Excel操作 値の取得2」を利用し、対象の勤務表ファイルから指定の値を取得し、【勤務表対象年】又は【勤務表対象月】に変数として格納します。その後、ライブラリ「文字列の連結(2つ)」を利用し、上記で取得した変数を組み合わせ【勤務表対象年月】という変数に格納するよう設定します。

その後、ノード「クリップボード」のプロパティを開き、“クリップボードへ値を設定”に【勤務表対象年月】を設定します。設定した値をシステムに入力するために、画像マッチングとエミュレーション(左クリック)を利用し、画面の対象部分に値が入力されるよう設定をします。

最後に、同じように画像マッチングで読込ボタン(最新のデータを読み込む)と編集ボタン(参照モードから編集モードに切り替える)を押下する部品を作ります。

 

参画プロジェクトをシステムに登録する

MA-EYESは、個人の作業工数をプロジェクト毎に登録することができます。作業実績入力画面で対象月に参画しているプロジェクトの登録を行い、各プロジェクトの作業時間を、日次や月次で入力可能な仕様となっています。

まずは、対象の勤務表(Excel)からプロジェクトコードを取得し、システムに転記する部品を作ります。この際、本シナリオにて使用する勤務表では、プロジェクトコードは同じ行の横のセルに記載されているため、列をカウントアップさせながらコードを読み取っていく必要があります。

これを実現させるために、本シナリオではA1形式ではなく、R1C1形式で列の情報を読み取る方法を採用します。R1C1形式で登録することで、今後セルの位置などを指定し変数として格納する場合に設定しやすくなります。

まず、ライブラリ「文字列の連結(4つ)」にて、R1C1形式にてセルの値を取得し、その取得結果を「R1C1形式」という変数に格納する設定をします。

画像のように、R、Cは固定の値とし、それぞれの数字の部分は【勤務表_行】【勤務表_列】という変数を新たに登録し可変にします。

ここまで設定が完了したら、ライブラリ「Excel操作(値の取得)」にて、プロジェクトコードを取得する設定をします。ファイル名は変数【勤務表ファイル】、セル位置は変数【(R1C1)形式】を設定し、格納先変数として【プロジェクトコード】という変数を新たに登録します。このプロジェクトコードがある場合はTrue、ない場合はFalseとする分岐条件を設定します。

Falseの部品は特に設定せず、Trueの部品を作成します。

まず、クリップボードに変数【プロジェクトコード】の値を設定します。その後、これまでと同じ要領で画像マッチングとエミュレーションを利用し、変数として入っているプロジェクトコードの値をシステムの入力欄に貼り付けるまでの設定をします。

このプロジェクトコード登録の作業を、列を変えて繰り返したいので、ノード「カウントアップ」を使用し、勤務表から読み取る列をカウントアップさせていきます。プロパティは、計算結果:勤務表_列、加算値:1を設定しています。

列をカウントアップさせたことで【勤務表_列】の変数が変わっているので、再度ライブラリ「文字列の連結(4つ)」(後のプロジェクトコード)に変数を格納し直すため部品を足します。

ここまでの部品(プロジェクトコードの取得~文字列の連結)を繰り返し、プロジェクト情報の登録が終わるまで繰り返し実施されるよう設定します。

ポイント:
繰り返しの条件設定について、条件設定:値⇒(空白)「等しい」値⇒(空白)にすることで、無限ループの設定にできます。

 

プロジェクト毎の工数情報をシステムに登録する

いよいよ、勤務表(Excel)から工数を取得し、システムに登録するという最後のグループです。

まず、プロジェクト毎に順に工数を登録していくため、最初に工数登録するプロジェクトコードを取得する部品を設定します。
先ほどプロジェクトコードを登録した際に、値の取得列をカウントアップしているため、ノード「変数値設定」にて変数【勤務表_列】の初期値を元の値「8」に戻す部品を組みます。
そして先ほどと同じ要領で、ライブラリ「文字列の連結(4つ)」にて、R1C1形式にてセルの値を取得し、その取得結果を変数【R1C1形式】に格納します。次に、ここで格納した【R1C1形式】の値が、変数【プロジェクトコード】として格納される部品を、ライブラリ「Excel操作(値の取得)」を利用して作成します。

次に、プロジェクトコードの有無で条件分岐し、プロジェクトコードがある場合(True)は工数をシステムに登録し、ない場合(False)はシナリオを終了するグループを作成します。

分岐条件の設定はこちらです。

ここで最初のグループに設定するのは、1つ目のプロジェクトの1日目の工数をシステムに登録するまでの動作です。
※補足:MA-EYESの仕様上、最初の値だけは画像マッチングを利用しなくては登録ができないため、その後のグループとは切り離して設定しています。

最初に登録する工数の値は、勤務表上、1つ目のプロジェクトコードの1つ下の行にあるため、変数【勤務表_行】は1カウントアップさせる必要があるので、カウントアップのノードを利用します。

その後プロジェクトコード登録の時と同じように、上記で設定し直した【勤務表_行】をライブラリ「文字列の連結(4つ)」で【R1C1形式】に格納し直し、その変数を、ライブラリ「Excel操作(値の取得)」を利用して【工数】という変数へと格納する部品を組みます。

上記で格納した変数【工数】を、ノード「クリップボード」の“クリップボードへ値を設定”で設定し、システムの入力欄に貼り付ける準備をします。その後画像マッチングで入力欄の位置を指定し、エミュレーションで貼り付ける部品を組みます。

※補足:MA-EYES(システム)の仕様上、最初の値を入力する部分のみ画像マッチングを利用していますが、以下の動作からは画像マッチングを使用せずに入力が可能です。

ここからは、プロジェクトごとに繰り返し順々に工数を登録していく部品を組んでいきます。繰り返しの構造は以下となります。

  1. 繰り返す度にプロジェクトコードをカウントアップする
  2. プロジェクトコードの有り無しで条件分岐する
  3. プロジェクトコードがある場合(True)は勤務表から対象の工数を取得しシステムに登録し、ない場合(False)は繰り返しを終了する

すでに記載しているように、プロジェクト毎に繰り返し工数を登録する(勤務表のプロジェクトコードを順に読み取る)には、【勤務表_列】をカウントアップさせる必要があります。そのため以下のグループを設定します。繰り返しの条件は無限ループ設定です。その他プロパティは前述してあるものと類似しているためここでは省きます。

ポイント:
ここで、直前のグループで既に【勤務表_列】の値は1列目(1つ目のプロジェクトコード)を指定してしまっているため、そのままカウントアップさせてしまうと2つ目のプロジェクトコードを読み取ってしまいます。それを防ぐために、繰り返しグループの直前にノード「変数値設定」を利用して列の値を「1」戻しておきます。

次に、プロジェクトコードの有無で分岐するグループを作ります。分岐条件は、プロジェクトコードがあればTure、なければFalseで設定します。

プロジェクトコードがある場合は、変数【勤務表_行】をカウントアップし、また「文字列の連結(4つ)」により結合させます。【R1C1形式】として格納されているこの値を、【工数】として取得し、クリップボードに設定します。

ポイント:
上記の設定については、既に最初のプロジェクトの1日目の工数はシステムに入力済みですが、次のグループで変数【工数】の有無で分岐しているため、あえて再度1日目の工数情報を取得し【工数】に格納する動作を組み込んでいます。

あとは、変数【工数】に値があればシステムに貼り付け、行をカウントアップさせ、日々の工数を繰り返し貼り付けていくグループを作れば完成です。

利用するシステムによって値を貼り付ける動作の設定は異なると思いますが、MA-EYESの場合はエミュレーションで設定しています。

参考までに、Enterキーでシステムの工数入力欄をアクティブにし、Ctrl+Vで貼り付け、Tabで次の入力欄に移動の流れでエミュレーション設定しています。「0貼り付け」の部品は、エミュレーションモードで作成した「0」キーをDown+Upする部品です。MA-EYESの仕様上、既に数値が入っている入力欄でないとEnterキーでアクティブにならないため組み込んでいる部品なので、一般的には利用しない部品だと思います。お使いのシステムの仕様に合わせてシナリオを作成しましょう。

 

最後に、【勤務表_行】をカウントアップさせ次の工数を取得しクリップボードに設定するまでの部品を作成し、繰り返し処理に繋げます。前述の組み方と類似しているので、プロパティの記載は省きます。

ここまで設定し実行してみて、滞りなくシナリオが進めば完成です。

まとめ

いかがでしたでしょうか。

今回は、勤務表(Excel)で管理している個人の作業工数を、プロジェクト毎にMA-EYES(基幹システム)に転記するシナリオを作成しました。Excel表の列の情報をカウントアップさせる方法や、画像マッチングとエミュレーションの部品を組み合わせて他システムとの連携を可能にする点などがポイントでした。

システムの仕様に関する部分の組み方はお使いのツールにより異なりますが、作成の流れや部品の設定の仕方など参考になれば幸いです。

筆者プロフィール

温井 美里
温井 美里ビーブレイクシステムズ
自社開発ERPシステム、その他ITツールの営業担当。
小劇場や映画館によく出没する。
魂が揺さぶられると夜な夜な絵をしたためはじめる。
幼き頃抱いていたプテラノドンへの憧れ…絵に込めると夢叶った気分。