knowledge AutoMate 自習用コンテンツ その1 - 解説

自習用コンテンツ その1(https://automate.sct.co.jp/knowledge/12041/)の内容は如何でしたでしょうか?
簡単に出来てしまった方も、難しかった方もいたかと思います。

下記では、解説を書いていきます。
(解答例のコードは、ページ最下部に書いています。)

■1. 値の受け渡し用に、変数を作成する

システム間連携(今回の場合、Excelとブラウザ)において値の受け渡しをするには、何をするにもまず変数が必要です。
今回の場合、
Excelからブラウザに受け渡す項目:「商品コード」「受注単価」「数量」「注文番号」「担当者名」
ブラウザからExcelに受け渡す項目:「受注番号」
がそれに該当します。そのため、変数を6つ作成する必要があります。
変数を作成するには、「変数 - 作成」アクションから実行します。
(図1: 「商品コード」用変数の作成)

同様にして、残りの変数も作成します。下記は変数6つを定義した際の例です。
(下記のコードは、タスクビルダーにコピー&ペーストすることでそのままタスクになります)

<!--変数定義-->
<AMVARIABLE NAME="var_ShohinCD" VALUE="" DESCRIPTION="商品コード" />
<AMVARIABLE NAME="var_JuchuTanka" VALUE="" DESCRIPTION="受注単価" />
<AMVARIABLE NAME="var_Suryo" VALUE="" DESCRIPTION="数量" />
<AMVARIABLE NAME="var_ChumonNo" VALUE="" DESCRIPTION="注文番号" />
<AMVARIABLE NAME="var_Tanto" VALUE="" DESCRIPTION="担当" />
<AMVARIABLE NAME="var_JuchuNo" VALUE="" DESCRIPTION="受注番号" />

なお、同様にコードはタスク内でコピペ可能なため、変数も毎回必ずしもドラッグ&ドロップから作成する必要はなく、コピーした内容を一部編集して使いまわすことも可能です。

■2. Excelを開き、各セルから値を取得する
変数を作成した次のステップとして行うことは、Excelから入力に必要な情報を取得することです。
Web画面をそのまま出しても、入力すべき値が分からないと何も実施することが出来ません。
そのため、Webに値を入力する前に、入力すべき値をExcelから変数に取得します。

・2-1. Excelを開く

今回の場合、「商品コード」~「担当者名」の取得、および最終的にWebから取得した値の書込みを、すべて同じExcelに対して実行します。
そのため、各値の取得・書込みごとにExcelを開閉していると効率が悪く、またメンテナンス性も悪くなります。
ゆえに、今回は「Excel - ブックを開く」アクションを利用した「Excelセッション」を使います。

以下では、ダウンロードしたExcelファイルを「C:\TEMP」に保存したものと仮定します。
まずは、「Excel - ブックを開く/作成する」アクションを用いて、当該Excelを開きます。
(図2. Excel - ブックを開くアクション 初期状態)

図2の赤枠部分をクリックし、目的のブックをフォルダから選択します。

(図3. フォルダマークから、目的のブック選択)

(図4. 設定後)

 
 

・2-2. Excelから値を取得する

Excelに書いてある値を変数に取得するには、「Excel - セルの取得」アクションを使用します。
Excelにおいては、商品コードが「D10」セルにあります。加えて、商品コードの格納先変数は、上記の例においては「var_ShohinCD」になります。
よって、それぞれの設定値は
①リソース:セッション (値取得対象のExcelは、上記ですでに開いている為)
②セル番地:D10
③変数に値を格納する:var_ShohinCD (作成済の変数はプルダウンから選択可能)
となります。
(図5. 設定例)

同様にして、残りの取得対象の値も設定します。
・単価:D14セル、var_JuchuTanka
・数量:D16セル、var_Suryo
・発注者(担当):D18セル、var_Tanto
・注文番号:D8、var_ChumonNo
にそれぞれ存在するので、対応する設定を上記の例(図5)にならって作成します。
※図5で設定したコードを4行追加でコピペしてから各種値を編集すると作業が楽になります。

<!--Excel 値取得-->
<AMEXCEL SESSION="ExcelSession1" WORKBOOK="C:\TEMP\Order00008674.xlsx" />
<AMEXCEL ACTIVITY="get_cell" SESSION="ExcelSession1" RESULTVARIABLE="var_ShohinCD" CELLREF="D10" />
<AMEXCEL ACTIVITY="get_cell" SESSION="ExcelSession1" RESULTVARIABLE="var_ChumonNo" CELLREF="D8" />
<AMEXCEL ACTIVITY="get_cell" SESSION="ExcelSession1" RESULTVARIABLE="var_JuchuTanka" CELLREF="D14" />
<AMEXCEL ACTIVITY="get_cell" SESSION="ExcelSession1" RESULTVARIABLE="var_Suryo" CELLREF="D16" />
<AMEXCEL ACTIVITY="get_cell" SESSION="ExcelSession1" RESULTVARIABLE="var_Tanto" CELLREF="D18" />

 
 

■3. ブラウザに対する値の入力・取得
値一式をExcelから取得したのち、各種値をブラウザに対して入力します。
流れとしては、「1. ブラウザで対象ページを開く」「2. 値入力」「3. クリックによる確定処理」「4. 値取得」のようになります。

・3-1. ブラウザで対象ページを開く

「Webブラウザ - ブラウザを開く」アクションを使用します
使用するブラウザはお手元の環境に合わせて任意のものを選択してください(本解説記事では「Google Chrome」を使用しています)。
ページURLに弊社デモサイトのURL「https://www-1.sct.co.jp/amdemo/order1.php」を指定し、ブラウザセッション名は任意の名前を指定します。

 
 

・3-2. ブラウザに値を書き込む

ブラウザに対して値をセットするには、「Webブラウザ - 値の設定」アクションを使用します。
※まず、この設定を実施する前に、1つ前の「Webブラウザ - ブラウザを開く」アクションのみ実行して対象のデモサイトのブラウザ画面を開いておきます。

※ブラウザセッション名をデフォルトから変更している場合は、1つ前の「Webブラウザ - 開く」アクションをコピーしてから当該アクションを編集すると、ブラウザセッション名がデフォルトに戻らず、引き継がれるので楽です。
(図7: アクション切替)

①「URL」にページのURLが入力されていると②「HTML要素を検索する」のアイコン「クリック」が有効化されます
(URL欄が空になっている場合は、虫眼鏡のアイコンをブラウザのウィンドウ上までドラッグし、ドロップすることでURLが取得できます)。
このアイコンを一度クリックし、Web画面の値を書き込む場所にマウスを合わせると③入力欄が青くハイライトされ、マウス位置のHTML要素が表示されます。
(図8: オブジェクト選択手順)

※11.6までは下図③, ④のように、マウスのある場所は青く四角く囲われ、HTML要素は右下に表示されます。

要素が表示された状態でクリックすると①対象のオブジェクトの要素がプロパティに取得されます
次に②「インタラクション」をクリックして展開します
この後設定する内容は、対象のオブジェクトに対しての操作として、書き込む値(セットする変数)を指定します。
(図9: オブジェクト選択後)

ブラウザにセットする値を指定します。
「インタラクション」の展開後、「次のように変更」フィールドをクリックしてカーソルをアクティブにすると、①「%」マークが現れるのでクリックします
※テキストボックスをアクティブにしないと、「%」マークが現れません。
次に、「エクスプレッション ビルダー」が立ち上がります。
ここでセットする対象の変数(ここでは「var_ShohinCD」)を②ダブルクリックし③のフィールドに挿入されることを確認します。
③のフィールドに現れていることを確認後、④「Insert」ボタンをクリックします。
(図10: 変数選択操作)

変数を挿入すると、①「%」で囲まれた文字列が挿入されます。
AutoMateでは、「%」で囲まれた文字列部分が、変数や式として扱われます。
この内容で、②「OK」ボタンをクリックし、アクション内容を確定します。
(図11: 変数選択後の画面)

上記の結果生成されるAMLコードは以下のようになります。

<AMWEBBROWSER ACTIVITY="setvalue" HTMLNAME="prodcode" SESSION="BrowserSession1" ATTRIBUTE=":text">%var_ShohinCD%</AMWEBBROWSER>

残りの項目に関しても、同様にオブジェクト選択と変数指定を行い、設定します。
※なお、倉庫については変数選択ではなく、固定値の直接入力になります。

ただし、最後の備考の部分は、「変数を2つ使用する」「固定値を含む」点で少し異なります。
以下のように設定を行います。
(図12: 複数の変数と固定値を含む文字列)

なおこの際、「%」が何の文字も含まずに2連すると、ただの文字列の「%」として扱われるため、連続してはいけません。そのため、平文で書くならば必ずワンブランクが必要になります。
(変数の結合方法は、別途knowledge記事をご参照ください)

ブラウザの値セット処理を列挙すると、以下のようになります。(BrowserSession名を「BrowserSession1」とした場合)

<AMWEBBROWSER ACTIVITY="setvalue" HTMLNAME="prodcode" SESSION="BrowserSession1" ATTRIBUTE=":text">%var_ShohinCD%</AMWEBBROWSER>
<AMWEBBROWSER ACTIVITY="setvalue" HTMLNAME="prodprice" SESSION="BrowserSession1" ATTRIBUTE=":text">%var_JuchuTanka%</AMWEBBROWSER>
<AMWEBBROWSER ACTIVITY="setvalue" HTMLNAME="prodqty" SESSION="BrowserSession1" ATTRIBUTE=":text">%var_Suryo%</AMWEBBROWSER>
<AMWEBBROWSER ACTIVITY="setvalue" HTMLNAME="prodwh" SESSION="BrowserSession1" VALUE="東京" ATTRIBUTE=":text" />
<AMWEBBROWSER ACTIVITY="setvalue" HTMLNAME="proddesc" SESSION="BrowserSession1" ATTRIBUTE=":text">%var_ChumonNo% %var_Tanto%様</AMWEBBROWSER>

 
 

・3-3. ブラウザのボタンクリック処理

ブラウザ上のオブジェクト(ボタンなど)をクリックするには、「Webブラウザ - クリック」アクションを使用します。
オブジェクト選択処理については、3-2と同様です。
一方で、クリック処理の制御として、画面遷移を伴うクリックの場合は、図13の赤枠部分「ページのローディングが終了するまで待つ」にチェックを入れる必要がある場合がほとんどです。
理由としては、AutoMateでは「待機する」という処理を明示的に入れない限りは、操作対象がどのような状態であろうと処理を先に進めようとします。
人間が操作する分には暗黙的に実施しているこの工程も、RPAに対しては命令する必要があります。
ここにチェックが入っていない場合、画面遷移が完了していないのにボタンをクリックしようとし、そのステップで実行エラーになるといったことが頻発します。
(図13: Webページのローディング待機指示)

この方法に従い、2回のクリック処理を定義します。

 
 

・3-4. ブラウザの値取得処理

ブラウザ上のテキストを取得するには、「Webブラウザ - 値の取得」アクションを使用します。
オブジェクト選択処理については、3-2と同様です。
違う点は、取得したテキストなどの格納先の変数を指定する部分です。(図14の赤枠部分を参照)
ここには、取得したテキストを格納する変数を指定します。ここには「var_JuchuNo」を指定します。(プルダウンリストから選択可能です)
(図14: Webブラウザ - 値の取得)

 
 

・3-5. ブラウザ終了処理

ブラウザセッションを終了してブラウザを閉じるには、「Webブラウザ - ブラウザを閉じる」アクションを使用します。
プルダウンリストから終了対象のブラウザセッションを選択し、「OK」をクリックします。
(図15: Webブラウザ - ブラウザを閉じる)

ここまでのブラウザ関連処理をまとめると、以下のようになります。

<!--ブラウザ 値入力-->
<AMWEBBROWSER URL="https://www-1.sct.co.jp/amdemo/order1.php" SESSION="BrowserSession1" />
<AMWEBBROWSER ACTIVITY="setvalue" HTMLNAME="prodcode" SESSION="BrowserSession1" ATTRIBUTE=":text">%var_ShohinCD%</AMWEBBROWSER>
<AMWEBBROWSER ACTIVITY="setvalue" HTMLNAME="prodprice" SESSION="BrowserSession1" ATTRIBUTE=":text">%var_JuchuTanka%</AMWEBBROWSER>
<AMWEBBROWSER ACTIVITY="setvalue" HTMLNAME="prodqty" SESSION="BrowserSession1" ATTRIBUTE=":text">%var_Suryo%</AMBWEBROWSER>
<AMWEBBROWSER ACTIVITY="setvalue" HTMLNAME="prodwh" SESSION="BrowserSession1" VALUE="東京" ATTRIBUTE=":text" />
<AMWEBBROWSER ACTIVITY="setvalue" HTMLNAME="proddesc" SESSION="BrowserSession1" ATTRIBUTE=":text">%var_ChumonNo% %var_Tanto%様</AMWEBBROWSER>
<AMWEBBROWSER ACTIVITY="click" HTMLNAME="button1" USEMATCH="1" SESSION="BrowserSession1" WAIT="YES" />
<!--確認画面 クリック-->
<AMWEBBROWSER ACTIVITY="click" HTMLNAME="button1" USEMATCH="1" SESSION="BrowserSession1" WAIT="YES" />
<!--値取得-->
<AMWEBBROWSER ACTIVITY="getvalue" HTMLID="order_no" SESSION="BrowserSession1" RESULTVARIABLE="var_JuchuNo" ATTRIBUTE=":text" />
<!--ブラウザを閉じる-->
<AMWEBBROWSER ACTIVITY="close" SESSION="BrowserSession1" />

 
 

■4. Excel書込み処理・および保存処理

・4-1. Excelの値書込み

Excelに対して値を書き込むには、「Excel - セルの設定」アクションを使用します。
なお、書込み対象のExcelは値を取得したExcelと同一のため、Excelセッションは同一のものを使用します。
今回の場合、値の書込み先は
担当者名(固定値) :D22セル、固定値(例:三和 花子)
受注番号(可変、Webから取得):D23セル、var_ChumonNo
になります。
書き込む値として変数を指定する方法は、3-2と同様です。
図17は、受注番号を書込む場合の設定例です。
※担当者名を書込むステップの場合は、下記の図における「新しい値」が固定値(例:三和 花子)に、「セル番地」が「D22」にそれぞれ変更になります。
(図17: セルの設定)

 
 

・4-2. Excel保存処理

Excelセッションを閉じるには、「Excel - ブックを閉じる」アクションを使用します。
今回は、同じファイルをそのまま上書き保存するので、デフォルトから値は変更せず「OK」をクリックします。
(図18: ブックを閉じる)

今回定義する処理は以上になります。
結果として、Excelが以下のように保存されていれば処理が想定通りに組まれています。
(図19: 処理結果例)

なお、以下に今回の処理構築例を示します。
また、他の同一フォーマットのExcel(サンプル用Excel2)で稼働するか否かは、「Excel - ブックを開く/作成する」のステップで指定するファイルのみ変更すれば確認可能です。

処理構築例を展開するにはここをクリック
<!--変数定義-->
<AMVARIABLE NAME="var_ShohinCD" VALUE="" DESCRIPTION="商品コード" />
<AMVARIABLE NAME="var_JuchuTanka" VALUE="" DESCRIPTION="受注単価" />
<AMVARIABLE NAME="var_Suryo" VALUE="" DESCRIPTION="数量" />
<AMVARIABLE NAME="var_ChumonNo" VALUE="" DESCRIPTION="注文番号" />
<AMVARIABLE NAME="var_Tanto" VALUE="" DESCRIPTION="担当" />
<AMVARIABLE NAME="var_JuchuNo" VALUE="" DESCRIPTION="受注番号" />
<!--Excel 値取得-->
<AMEXCEL SESSION="ExcelSession1" WORKBOOK="C:\TEMP\Order00008674.xlsx" />
<AMEXCEL ACTIVITY="get_cell" SESSION="ExcelSession1" RESULTVARIABLE="var_ShohinCD" CELLREF="D10" />
<AMEXCEL ACTIVITY="get_cell" SESSION="ExcelSession1" RESULTVARIABLE="var_ChumonNo" CELLREF="D8" />
<AMEXCEL ACTIVITY="get_cell" SESSION="ExcelSession1" RESULTVARIABLE="var_JuchuTanka" CELLREF="D14" />
<AMEXCEL ACTIVITY="get_cell" SESSION="ExcelSession1" RESULTVARIABLE="var_Suryo" CELLREF="D16" />
<AMEXCEL ACTIVITY="get_cell" SESSION="ExcelSession1" RESULTVARIABLE="var_Tanto" CELLREF="D18" />
<!--ブラウザ 値入力-->
<AMWEBBROWSER URL="https://www-1.sct.co.jp/amdemo/order1.php" SESSION="BrowserSession1" BROWSER="chrome" />
<AMWEBBROWSER ACTIVITY="setvalue" HTMLNAME="prodcode" SESSION="BrowserSession1" ATTRIBUTE=":text">%var_ShohinCD%</AMWEBBROWSER>
<AMWEBBROWSER ACTIVITY="setvalue" HTMLNAME="prodprice" SESSION="BrowserSession1" ATTRIBUTE=":text">%var_JuchuTanka%</AMWEBBROWSER>
<AMWEBBROWSER ACTIVITY="setvalue" HTMLNAME="prodqty" SESSION="BrowserSession1" ATTRIBUTE=":text">%var_Suryo%</AMWEBBROWSER>
<AMWEBBROWSER ACTIVITY="setvalue" HTMLNAME="prodwh" SESSION="BrowserSession1" VALUE="東京" ATTRIBUTE=":text" />
<AMWEBBROWSER ACTIVITY="setvalue" HTMLNAME="proddesc" SESSION="BrowserSession1" ATTRIBUTE=":text">%var_ChumonNo% %var_Tanto%様</AMWEBBROWSER>
<AMWEBBROWSER ACTIVITY="click" HTMLNAME="button1" USEMATCH="1" SESSION="BrowserSession1" WAIT="YES" />
<!--確認画面 クリック-->
<AMWEBBROWSER ACTIVITY="click" HTMLNAME="button1" USEMATCH="1" SESSION="BrowserSession1" WAIT="YES" />
<!--値取得-->
<AMWEBBROWSER ACTIVITY="getvalue" HTMLID="order_no" SESSION="BrowserSession1" RESULTVARIABLE="var_JuchuNo" ATTRIBUTE=":text" />
<!--ブラウザを閉じる-->
<AMWEBBROWSER ACTIVITY="close" SESSION="BrowserSession1" />
<!--Excel 書き込み-->
<AMEXCEL ACTIVITY="set_cell" SESSION="ExcelSession1" NEWVALUE="三和 花子" CELLREF="D22" />
<AMEXCEL ACTIVITY="set_cell" SESSION="ExcelSession1" NEWVALUE="%var_JuchuNo%" CELLREF="D23" />
<AMEXCEL ACTIVITY="close_workbook" SESSION="ExcelSession1" />