26 LINE送信(ISA)

スマホアプリのLINEにPC版があるのをご存じですか?

PC版LINEをインストールしていれば、ロボットからLINEを操作することができます。

PC版LINEの操作は、Desktop Automation(以下 DA)を使って行います。DAの使い方は「15 DAを使ってみよう」にも記載していますので、もしここで行き詰まったらそちらも参考にしてくださいね (*’ω’*)

 ※DAのインストールと設定は「14 DAをインストールしよう」を参照してください。
 ※DAエディターの操作は「24 組込Chromium(その1)」と「25 組込Chromium(その2)」にも記載しています。


【1】ISAとは

実は、DAからLINEを操作するには少し工夫が必要です。

なぜかというと、DAはLINEのボタン位置やテキスト位置をうまく認識してくれないからです。

そこで登場するのが、ISA!!これは、インテリジェント・スクリーン・オートメーション(Intelligent Screen Automation)といって、指定されたアプリケーションのUI要素(ボタン、アイコン、テキストボックスなど)を自動的に判断する拡張イメージ検索機能と画面認識機能です。


はい、難しいーーーっ。こういうときは、実際にやってみるのが一番です!!


【2】ロボットを作成する

【2-1】ロボットを新規作成して変数を追加する

(1)新規または既存のプロジェクトに、[LINE送信.type]を作成し、変数を追加します。

《追加する変数》

名前種類デフォルト値
宛先Short Text(LINEの宛先)
メッセージLong Text(送信するメッセージ)


(2)次に、ロボット[LINE送信ロボ.robot]を作成して、タイプ[LINE送信]を追加します。


【2-2】デバイスマッピングを作成する

(1)[ロボットの設定]の[デザインモード実行]を[スマート実行(フル)]に変更します。

 ※[デザインモード実行]>[スマート実行(フル)]はDAを使うときのお約束です。



(2)プロジェクトを右クリック→[新規作成]→[オートメーションデバイスマッピング]をクリックします。

そして、表示されたダイアログにデバイスマッピングの名前や接続先などを設定します。

 ※デバイスマッピングの作成は「15 DAを使ってみよう」に詳しく記載しています。



【2-3】DAステップを追加する

(1)ロボットビューに新しいアクションステップを追加して、[アクション]は[Desktop Automation]を選択します。[必要なデバイス]は[スタティックリファレンス]の[local_pc]を選択してください。


(2)デスクトップ画面が操作しやすいように、DSの画面を小さくして右端に寄せてください。そして、デスクトップ画面にはLINEのアイコンを作成しておいてください。

準備ができたら、[Desktop Automation]ステップの[ワークフロー]の[編集]をクリックします。


【2-4】LINEを起動する(DA)

(1)エディター画面が表示されたら、画面を小さくして右端に寄せてください。

ではまず、LINEを起動する処理を作成します。

レコーダー・ビューの[Program Manager]タブをクリックすると、デスクトップ画面が表示されますので、LINEのアイコンを右クリック→[クリック]→[ダブルクリック]をクリックします。

そして、[ステップオーバー]ボタンをクリックして処理を実行してください。


(2)LINEが起動したら、レコーダー・ビューの[LINE]タブをクリックし、[再開]ボタンをクリックします。


すると、レコーダー・ビューにLINEの画面が表示されます。


(3)次に、LINEの友だち一覧を表示します。

まず、レコーダー・ビューの[LINE]タブを右クリック→[ツリーモード]→[ISA]をクリックしてください。


そして、再度[再開]ボタンをクリックします。


(4)ツリーモードがISAに変更されると、LINEの[友だち]ボタンが認識できるようになります。


では、レコーダー・ビューの[友だち]ボタンを右クリック→[クリック]→[Left]をクリックしてください。


そして、[ステップオーバー]ボタンをクリックして実行します。


すると、LINEの友だち一覧が表示されます。


(5)次に、LINE画面の右端にある[>]ボタンをクリックしてトークルームを開きます。

[>]を右クリック→[クリック]→[Left]をクリックしてください。


(6)ここで、追加された[Left Click]ステップの[Component]を修正します。そして、[ステップオーバー]ボタンをクリックして実行します。


[Location Found]>[Component]の修正

《修正前》 element
《修正後》 element[name=">"]


すると、LINEのトークルームが表示されます。


(7)これで、LINE起動のワークフローは9割完成です。最後に少し手直しをしていきましょう。

まずは、エディター画面上の[停止]ボタンをクリックして実行をリセットしてから、各ステップをわかりやすい名前に変更してください。


(8)次に、[トークルームを開く]ステップを修正します。

なぜかというと、既にトークルームが開いているときは[>]ボタンが見つからず、エラーになってしまうからです。


[>]ボタンが見つからなかったときの処理

修正前 : 60秒待機 → タイムアウトエラー
修正後 :   2秒待機 → 処理続行



(9)これで、LINE起動のワークフローは完成です。動作確認をしてみましょう。

起動しているLINEを閉じてからエディター画面上の[実行]ボタンをクリックして、処理が正常に行われるかを確認してください。

 ※DAに不具合が発生した場合は、DSに戻って[更新]ボタンをクリックしてリフレッシュしてみてください。


確認できたら、[保存]ボタンをクリックしてエディターを閉じてください。


(10)DSに戻ったら、[Desktop Automation]ステップの名前を「LINE起動」に変更して、[ステップを無効化]しておきます。

 ※LINEが起動しているときに[LINE起動]ステップが実行されるとエラーになります。(エラー回避処理も考えてみてくださいね!)



【2-5】LINEメッセージを送信する(DA)

(1)新しいアクションステップを追加して、[アクション]は[Desktop Automation]を選択します。[入力値]はタイプ[line送信]を選択し、[必要なデバイス]は[スタティックリファレンス]の[local_pc]を選択してください。

そして、[ワークフロー]の[編集]をクリックします。


(2)エディター画面が表示されたら画面を小さくして右に寄せ、LINE画面が隠れないようにします。

そして、レコーダー・ビューの[LINE]タブを右クリック→[ツリーモード]→[ISA]をクリックします。


(3)ここから、LINEの宛先を入力していきます。

ワークフロー画面の黄色い丸マークを右クリック→[Set Clipboard]をクリックしてください。

 ※クリップボードに保存→貼り付けする方が、[Enter Text ステップ]よりもうまく文字入力できました。



そして、[Set Clipboard]ステップの[Contents]には変数[line送信.宛先]をセットして、[ステップオーバー]ボタンをクリックします。


(4)次に、[名前で検索]ボックスを右クリック→[フィールドでキープレス]→[フィールドに貼り付け]をクリックして、[ステップオーバー]ボタンをクリックします。


すると、変数[line送信.宛先]の値が貼り付けられ、友だち一覧に送信対象の宛先が表示されます。

 ※該当する宛先が1件になるように、LINEの表示名を変更するなど調整してください。


(5)宛先を右クリック→[クリック]→[Left]をクリックして、[ステップオーバー]ボタンをクリックします。


(6)宛先にトーク履歴がない場合は次のような画面が表示されますので、[トーク]を右クリック→[クリック]→[Left]をクリックします。


(7)そして、[トーク]ボタンが見つからないときの処理を変更してから、[ステップオーバー]ボタンをクリックします。


[トーク]ボタンが見つからなかったときの処理

修正前 : 60秒待機 → タイムアウトエラー
修正後 :   2秒待機 → 処理続行



(8)ここから、LINEのメッセージを入力していきます。

ワークフロー画面の黄色い丸マークを右クリック→[Set Clipboard]をクリックしてください。


そして、[Set Clipboard]ステップの[Contents]には変数[line送信.メッセージ]をセットして、[ステップオーバー]ボタンをクリックします。


(9)次に、LINE画面のメッセージ入力ボックスを右クリック→[フィールドでキープレス]→[フィールドに貼り付け]をクリックして、[ステップオーバー]ボタンをクリックします。


すると、変数[line送信.メッセージ]の値が貼り付けられます。


(10)最後に、メッセージ送信処理を作成します。

ワークフローの黄色い丸マークを右クリック→[Press Key ステップ]をクリックしてから、[ステップオーバー]ボタンをクリックします。


(11)これで、LINEのメッセージ送信処理が完成しました。

エディター画面上の[リセット]ボタンをクリックして実行をリセットし、各ステップをわかりやすい名前に変更しましょう。


(12)そして、LINEアプリケーションを下図のような状態にしてから、エディター画面上の[実行を開始]ボタンをクリックして、処理が正常に行われるかどうか確認してください。


確認できたら、[保存]ボタンをクリックしてエディターを閉じてください。


(13)DSに戻ったら、[Desktop Automation]ステップの名前を「LINE送信」に変更して、[ステップを無効化]しておきます。


【2-6】LINEを終了する(DA)

(1)新しいアクションステップを追加して、[アクション]は[Desktop Automation]を選択します。[必要なデバイス]は[スタティックリファレンス]の[local_pc]を選択してください。

そして、[ワークフロー]の[編集]をクリックします。


(2)エディター画面が表示されたら画面を小さくして右に寄せ、LINE画面が隠れないようにします。

そして、ワークフロー画面の黄色い丸マークを右クリック→[Press Key ステップ]をクリックしてください。


(3)[Press Key ステップ]の設定値は、次の通りです。設定できたら、[ステップオーバー]ボタンをクリックしてください。

  • [Application]>[Base Finder]>[Reuse Device]
  • [Application]>[Device]>[local_pc]
  • [Application]>[Application]> LINE.exe
  • [Key]>[Standard Keys]>[Esc]
  • [Count]> 3

 ※デバイスマッピング[local_pc]のLINEアプリケーション(LINE.exe)でEscapeキーを3回押します!ということ。



(4)これで、LINEアプリケーションを終了する処理が完了したので(わずか1ステップ)、[保存]ボタンをクリックしてエディターを閉じてください。

そして、DSに戻ったら、[Desktop Automation]ステップの名前を「LINE終了」に変更してください。

さらに、無効化していた[LINE起動]ステップと[LINE送信]ステップを有効化してください。


【3】ロボットを実行する

(1)はじめに、デザインモードで最初のステップをクリックしてから[更新]ボタンをクリックします。(リフレッシュ!)

そして、デバッグモードでロボットを実行して、LINEの送信結果を確認してください。


今回は、宛先とメッセージをデフォルト値に設定しましたが、工夫次第でいろいろなLINE送信ロボットが作れます (*’▽’)♪

あとは、「送ってはいけない人に送ってしまった!」なんてことがないように気を付けましょう!!


25 組込Chromium(その2)

(前回からのつづき)


【3-5】ラベル名を判定する

(1)ラベル名を抽出できたら、ラベル名によって入力内容を変える処理を作成していきます。

[ラベル名抽出]ステップの次の丸印を右クリック→[Conditional]をクリックしてください。

そして、[Conditional]ステップを開いてマウスを合わせると緑色の[+]ボタンが表示されるので、それをクリックして条件を追加していきます。


(2)[Conditional]ステップには、まず、「ラベル名が〇〇のとき」という条件を作成していきます。


《作成する条件》

1. =ラベル名 == "苗字"
2. =ラベル名 == "名前" 
3. =ラベル名 == "会社名"
4. =ラベル名 == "部署"
5. =ラベル名 == "住所"
6. =ラベル名 == "メールアドレス"
7. =ラベル名 == "電話番号"

[+]をクリックして条件を追加していきましょう。

 ※入力ボックスの左端の[=]はボタンになっています。[=]有りのときは「式」、[=]無しのときは「文字列」として認識されます。


[Conditional]ステップの条件部分が完成すると、下図のようになります。


(3)[ステップイントゥー]ボタンをクリックして、ラベル名の条件判定が正常に行われることを確認してください。


下図の場合、[入力エリア]のラベル名は「メールアドレス」と判定されたことがわかります。


【3-6】テキストボックスに値を入力する

ここから、ラベル名に合った[IN_顧客データ]の項目をテキストボックスに入力していきます。


(1)黄色い丸印をクリックしてから、[入力エリア]内のテキストボックスを右クリック→[フィールドにテキストを入力]→[変数から]→[IN_顧客データ:顧客データ]→対象のデータ(下図の場合は[メールアドレス:Text])をクリックします。


(2)[Input text from]ステップが追加されたら、テキストボックスの検出条件を修正します。


[Location Found]>[Component]>[Inner Component]の修正

《修正前》 INPUT[der_rendered="y"]
《修正後》 INPUT[type="text"]


(3)[Input text from]ステップの名前をわかりやすい名前(下図の場合は「メアド入力」)に変更します。


(4)上記(3)のステップをコピー&ペーストして、ステップ名とステップ内のアクション[Input Text]>[Text]を変更していきます。



(5)これで、ラベル名を判定してラベル名に合ったデータをテキストボックスに入力する処理が完成しました。

画面上の[リセット]ボタンをクリックしてから、[ステップオーバー]ボタンをクリックしてください。



ラベル名に合ったデータがテキストボックスに入力されたでしょうか。


(6)これで、データ入力処理は完成です。[保存]ボタンをクリックしてから DA Editorを閉じてください。

DSに戻ったら、[Desktop Automation]ステップの名前を「データ入力」に変更します。



【3-7】登録ボタンをクリックする

(1)[データ入力]ステップの後に、[Desktop Automation]ステップを追加します。そして、[ワークフロー]の[編集]ボタンをクリックしてDA Editorを開きます。


(2)DA Editorが開いたら、RPAチャレンジのページの[登録]ボタンを右クリック→[クリック]→[Left]をクリックします。



(2)[Left Click]ステップが追加されたら、[登録]ボタンの検出条件を修正します。


[Location Found]>[Component]の修正

《修正前》 INPUT[class="btn btn-default"][der_rendered="y"]
《修正後》 INPUT[type="submit"]


(3)そして、[ステップオーバー]ボタンをクリックして[登録]ボタンクリック処理を実行してください。


(4)すると、RPAチャレンジのページが[Round 2]に遷移します。そして、[保存]ボタンをクリックしてDA Editorを閉じてください。

 ※DAワークフローは、長くなりすぎるとデバッグやメンテナンスがしにくくなるので、処理毎に分けて作ってください。


(5)DSに戻ったら、[Desktop Automation]ステップの名前を「登録ボタンクリック」に変更します。


【3-8】結果画面(スクショ)の抽出

(1)無効化していた[RPAチャレンジ開始]ステップを有効にして、最初のステップをクリックしてから、[すべて保存]ボタンと[更新]ボタンをクリックします。

 ※[更新]ボタンをクリックすると、DA Editorで開いていたページが閉じます。


(2)次に、イテレーションを10まで進めてからトライステップをクリックしてください。


(3)そして、トライステップの代替手段の[Write File]の前に、[Desktop Automation]ステップを追加します。

[出力マッピング]には変数[スクショ]を設定し、[ワークフロー]の[編集]ボタンをクリックしてDA Editorを開きます。

 ※変数[スクショ]には、結果画面の画像データが返ってきます。


すると、結果画面が表示されています。


(4)ここから、結果画面の画像を抽出していきますが、その前に。

まず、ワークフロー画面の[Output]を見てください。[Binary]という値が入っています。これは、DS側の[出力マッピング]で設定した変数[スクショ]のデータ型になっています。

そして、[Return]はエラーになっています。ここには、 DS側の[出力マッピング]で設定したデータ型の値(ここでは画像データ)を返さなければなりません。

ということで、抽出した画像データを入れる変数[OUT_スクショ]を作る→結果画面を変数[OUT_スクショ]に抽出する→[Return]に変数[OUT_スクショ]を返す、というワークフローを作成していきましょう。


(5)[Variables]に「OUT_スクショ」という変数を作成し、データ型は[Binary]を選択します。

そして、[Return]>[Values]には[OUT_スクショ]を入力しておきましょう。

これで、画像データを格納する変数の宣言と、その画像データをDS側に返す処理ができました。あとは、結果画面を抽出するだけです。


(6)コード・ビューのwindowタグを右クリック→[画像を次へ抽出]→[OUT_スクショ:Binary]をクリックします。


すると、[Extract Image]ステップが作成されます。


(7)次に、[ステップオーバー]ボタンをクリックして、[Return]ステップの後の丸印まで処理を進めてください。


すると、画面右下の[ワークフロー状態]の[Variables]>[OUT_スクショ]と[Output]に、抽出された画像が表示されます。

これで、結果画面の抽出処理は完了です。 [保存]ボタンをクリックしてから DA Editorを閉じてください。


(8)DSに戻ったら、[Desktop Automation]ステップの名前を「スクショ抽出」に変更します。

これで、ロボットは完成です!・・・・いや、違うな、まだだな (゜.゜)


【3-9】待機時間を追加する

ロボットの処理速度はとても速く、画面が遷移する前に次の処理を行ってしまうことがあります。

今回の結果画面の抽出がまさにそれ。結果画面が表示される前に、結果画面の抽出処理を実行してしまうのです。。

みなさんの環境で同じ結果になるかどうかわかりませんが、完成したロボットをこのまま実行してみることにします。


(1)最初のステップをクリックしてから、イテレーションを「1」に戻して、[すべて保存]ボタンと[更新]ボタンをクリックします。(保存&リフレッシュ!)


(2)そして、デバッグモードで実行後に結果画面の出力ファイルを確認すると・・・・


あららー。これは結果画面じゃないですねー。まだ[登録]ボタンがクリックされていません。


(3)こういったことを回避するための確実な方法は、「結果画面が表示されたら画像を抽出する」ですが、ちょっと大変なので次回にしたいと思います。

ということで、ここではDSの[Wait]ステップを使います。[秒]は「2.0」くらいで。(適当)


【4】ロボットを実行する

(1)はじめに、デザインモードで最初のステップをクリックしてから[更新]ボタンをクリックして、DA Editorで起動しているRPAチャレンジのページを閉じます。(リフレッシュ!)

そして、デバッグモードでロボットを実行して、処理が終了したら結果画面の画像を確認してください。


結果画面が見れました!

そして、処理速度は「16081ミリ秒」。前に作ったDSバージョンは「54845ミリ秒」だったので、処理速度大幅UPです。素晴らしーっ!!


次回は、[スクショ抽出]ステップで[Extract Image]>[Location Found]を使って(DSの[Wait]ステップを使わずに)結果画面を出力する方法を紹介できたらなーと思います。

あと、[RPAチャレンジ開始]ステップでは、[Guarded Choice]>[Location Found]を追加して、既にページが開いているときは一旦閉じる処理を追加したいなー。

それから、いちいちリフレッシュしなくても連続実行できるように、結果画面の抽出後にページを閉じる処理も追加したいなー。(あ、でも、上記の一旦閉じる処理があれば不要かな)

というわけで、まだまだ改良の余地アリアリですが、とりあえずRPAチャレンジの結果画面までたどり着きましたねー。めでたしめでたし (*’ω’*)


24 組込Chromium(その1)

この記事を書いている途中にKofax RPAをアップグレード(10.3.1.1→10.4.0.0)しました。

すると、微妙にいろんなところが変わっていました!

アプリケーションやドキュメントのロゴが「Kofax Kapow」から「Kofax RPA」に変わっていたり、「Device Automation」という呼び名が「Desktop Automation」に変わっていたり。(どちらも略称 DAで良かった)

というわけで、今回から画面の雰囲気や表示されるメッセージなどが少し変わると思いますが、気にせずいきましょう (`・ω・´)b

では、さっそく本題です!前回紹介したRPAチャレンジを組込Chromiumフレームワークを使って作ってみましょう!!!

・・・・クミコミクロミウム??


【1】組込Chromiumフレームワークとは

組込Chromiumフレームワークとは、Desktop Automation(以下 DA)Editor上でのWeb操作を、Chromiumというオープンソースのウェブブラウザエンジンによって、動的に操作できる機能です。


DAは以前、「14 DAをインストールしよう」と「15 DAを使ってみよう」に登場しました。

DA機能を使用するためには、DAをインストールして設定して起動して、Design Studio(以下 DS)のプロジェクトにデバイスマッピング(*.device)を作成して・・・・という作業が必要でしたが、今回はDA機能ではなくDA Editorを使うだけなので、それらの作業は不要です。

とにかく、やってみればわかります!さっそく、Chromiumを使ったロボットを作成してみましょう (/・ω・)/


【2】ロボットをコピーする

(1)前回作成したロボットをコピーして開きます。


(2)そして、処理を置き換えるステップと、使用しない変数[セッション]を削除します。



(3)さらに、[ロボット設定]をクリックして、[デザインモード実行]を[スマート再実行(フル)]に変更します。


【3】DAステップを追加する

Chromiumは[Desktop Automation]ステップの中で使用します。[Desktop Automation]ステップは、処理毎に分けて作成するとデバッグやメンテナンスが容易になります。

 ※旧バージョンでは[デバイスオートメーション]ステップでした。


【3-1】RPAチャレンジのページを開く

(1)[Loop Rows]ステップの前に、[Desktop Automation]ステップを追加します。そして、[ワークフロー]の[編集]ボタンをクリックしてDA Editorを開きます。


(2)DA Editorが開いたら、丸印を右クリック→[Open ステップ]をクリックします。

 ※見た目がだいぶ変わりましたねー!!(10.3.1.1→10.4.0.0)



(3)[Open on Local]ステップが追加されたら、[URI]にRPAチャレンジのURLを入力して、[ステップオーバー]ボタンをクリックします。


《RPAチャレンジのURL》

 http://rpachallenge.com/?lang=ja




(4)[レコーダービュー]にRPAチャレンジのページが表示されたら、ページ左下の[開始]ボタンを右クリック→[Click]→[Left]をクリックしてください。

 ※この[レコーダービュー]でWeb画面を動的に操作できる機能が「組込Chromiumフレームワーク」です。


(5)そして、[ステップオーバー]ボタンをクリックして黄色いラインを右端まで移動させ、[保存]ボタンをクリックしてからDA Editorを閉じてください。


(6)DSに戻ったら、[Desktop Automation]ステップの名前を「RPAチャレンジ開始」に変更して、[ステップを無効化]しておきます。

 ※DSの[デザインモード]画面左上の[更新]ボタンをクリックしない限り、DA Editorで開いたページはそのまま残っているので、ページを複数開いてしまわないように気を付けてください。


【3-2】DA Editorへ変数を渡す

次の[Desktop Automation]ステップでは、DA Editorに顧客データを渡します。


(1)[Desktop Automation]ステップを追加し、[入力値]にはタイプ変数[顧客データ]を追加して、[ワークフロー]の[編集]ボタンをクリックします。


(2)DA Editorの[Input]には、DSから入力された[顧客データ]を格納する変数名を指定します。ここでは、[IN_顧客データ]としておきます。

画面右下の[ワークフロー状態]で、[IN_顧客データ]の内容を確認することができます。

 ※[レコーダービュー]にRPAチャレンジのページが表示されていない場合は、DSに戻って[RPAチャレンジ開始]ステップを実行してください。


【3-3】入力エリアを探し出す

はじめに、RPAチャレンジのページにある「ラベル+テキストボックス」のセットを「入力エリア」として探し出すことにします。

そして、「入力エリア」が見つかったらその内側のラベル名を抽出して、そのラベル名をもとに顧客データを入力する、というワークフローを作成していきます。


(1)まずは、「入力エリア」の検索範囲を指定します。ここでは、FORMタグを指定してください。


(2)そして、右クリック→[ループ]→[FORM 兄弟繰り返し]をクリックします。


(3)すると、[For Each FORM]というステップが追加されます。

そして、このステップの中には[Location Found]と[For Each Loop]というアクションが入っています。


それらのアクションの設定を修正して、下図の赤枠の部品が見つかったら(Location Found)、緑枠の要素をループする(For Each Loop)という処理ができるようにします。


[Location Found]>[Component]の修正

《修正前》 DIV[class="js-randomFormContainer"][der_rendered="y"]
《修正後》 DIV[class="js-randomFormContainer"]

[For Each Loop]>[Element Selector]の修正

《修正前》 > FORM
《修正後》 > FORM DIV[class^="js-inputContainer input-group"]

 ※DAのファインダー指定については、「Kofax RPA へようこそ > Desktop Automation > Desktop Automation のファインダー」を参照してください。
   ・ E > F : Eエレメントの子Fエレメント
   ・ E F  : Eエレメントの子孫Fエレメント
   ・ E[foo^=”bar”] : ”foo”属性値が文字列”bar”で正確に始まるEエレメント



(4)そして、ループする要素の名前を「入力エリア」に変更します。


[For Each Loop]>[Element Alias]の修正

《修正前》 element
《修正後》 入力エリア


(5)これで、入力エリアを探し出してループする処理ができました。画面左上の[ステップイントゥー]ボタンをクリックして実行し、動作を確認してください。


すべての入力項目が[入力エリア]として認識されればOKです。



【3-4】ラベル名を抽出する

(1)画面上の[リセット]ボタンをクリックして、実行をリセットしてください。


(2)そして、[For Each Loop]アクションの次にある丸印を右クリック→[ここまで実行]をクリックします。



(3)さらに、[入力エリア]内のラベル部分(下図の場合は「メールアドレス」)を右クリック→[ここから値を抽出]→[テキストイントゥー]→[変数を作成]をクリックします。

[変数を作成]ダイアログが表示されたら、[変数名]には「ラベル名」を入力、[タイプ]は[Text]を選択して[OK]ボタンをクリックします。


すると、[オートメーションワークフロー]の左端にある[Variables]に、[ラベル名]という変数が作成されます。この[Variables]は、変数の宣言エリアです。

そして、[値を抽出]アクションも作成されます。


(4)ここで、[値を抽出]アクションの抽出対象の設定を修正します。


[Location Found]>[Component]>[Inner Component]の修正

《修正前》 LABEL[der_rendered="y"]
《修正後》 LABEL


(5)[値を抽出]ステップの名前を[ラベル名抽出]に変更してから、ステップを実行してください。


画面右下の[ワークフロー状態]の[Valuables]>[ラベル名]に、ラベル名(下図では「メールアドレス」)が入力されているでしょうか。


ここからは、抽出したラベル名を・・・・と続けたいのですが、途中で力尽きてしまいそうなので次回にします (;´Д`)


23 RPAチャレンジ(DS)

巷で話題の(話題でないかも)RPAチャレンジのサイトを知っていますか?
このサイトでは、疑似的に顧客データの登録処理をすることができます。そして、その正確さと速度を判定してくれます。

※本来は UiPathでチャレンジするためのサイトです。


顧客データはExcelファイルに10件用意されていて、それを1件ずつWebページに入力して登録していきます。


このサイトの面白いところは、[登録]ボタンをクリックするたびに入力位置が変わるということです。しかも、テキストボックスのname属性やid属性まで変わるので、ロボットに入力位置を特定させるには工夫が必要です。



では、さっそくチャレンジしてみましょう!
ここでは、Design Studio(以下 DS)で(DAを使わずに)ロボットを作っていきたいと思います。


【1】顧客データのダウンロード

RPAチャレンジのサイトから、顧客データのExcelファイルをダウンロードして任意の場所に保存します。

《 RPAチャレンジのURL》

  http://rpachallenge.com/?lang=ja



【2】セッション変数について

このサイトのチャレンジを行うためには、セッション変数を使う必要があります。

なぜなら、DSで「Excelの行繰り返し→テキストボックス入力 →[登録]ボタンクリック」というワークフローを作成すると、2回目の繰り返しのときにも1回目と同じページが表示されてしまい、10件登録しても結果画面にたどり着かないからです。(それが見たいのに!)

そこで、登場するのがセッション変数です。この変数を使って[セッションの保存]→[セッションの復元]を行えば、繰り返し処理の中でも正常に次ページが表示されるようになります。つまり、10件目の登録が完了したら結果画面が表示されるようになるのです!

 ※より詳しく知りたい方は「Kofax Kapow へようこそ > リファレンス > Design Studio > ステップ アクション > セッションの保存」を参照してください。


【3】スクリーンショットについて

DSは内蔵ブラウザでWebページを表示するので、(デザインモード実行でなければ)実行中や実行後のWebページを見ることができません。つまり、結果画面も見られないのです。 Σ(゚д゚lll)ガーン

そこで、結果画面を[スクリーンショットを抽出]でImage型の変数に抽出→Image型の変数を[ファイル出力]して、結果画面をPNG(JPGでもOK)ファイルで確認できるようにしておきます。

 ※より詳しく知りたい方は「Kofax Kapow へようこそ > リファレンス > Design Studio > ステップ アクション > スクリーンショット抽出」を参照してください。


【4】ロボットを作成する

このチャレンジは、既出のアクションだけでクリアできます。まずは自力でやってみてください!

ヒントは、[名前付きタグ]。それが全てといっても過言ではない!


【4-1】ロボットを新規作成して変数を追加する

(1)新規または既存のプロジェクトに、ロボットと変数を作成します。


(2)そして、ロボットに変数を追加します。


【4-2】顧客データを抽出する

(1)ロボット・ビューに新しいステップを追加し、[ファイルシステム]→[ファイル読込]アクションを設定します。読み込む[ファイル名]は、ダウンロードした顧客データファイル(challenge_ja.xlsx)を指定します。


(2)ブラウザ・ビューに表示されている顧客データを右クリック→[開く(読み取り専用)]をクリックします。


(3)次に、RPAチャレンジのサイトを開きます。[ロード先]は[新しいウィンドウを開く]を選択してください。

《 RPAチャレンジのURL》

  http://rpachallenge.com/?lang=ja


(4)そして、RPAチャレンジのページにある[開始]ボタンをクリックします。


(5)ここから顧客データを読み込んでいきますので、ブラウザ・ビューの顧客データのタブを右クリック→[現在のウィンドウとして設定]をクリックします。


(6)次に、顧客データの左上の[全セル選択ボタン]を右クリック→ [ループ]→[選択中の行をループ]→[最初の行を除外]をクリックします。


(7)そして、顧客データを抽出して変数にセットしていきます。


(8)セットした内容は、変数・ビューで確認しておきましょう。



(9)そして、長々とした抽出ステップをグループ化します。これで、顧客データの抽出処理が出来上がりました。


【4-3】名前付きタグを設定する

ここから、抽出した顧客データをWebページに入力していきます。注意しなければならないのは、このサイトはページ毎に入力位置が変わるしくみになっているということです。

そこで、位置が変わってもテキストボックスを正しく検出できるように、それぞれのラベル(名前、苗字、会社…など)に[名前付きタグ]を設定して、そのタグ位置を元にしてテキストボックスを特定することにします。

 ※名前付きタグについては >>>>> こちら


(1)まずは、RPAチャレンジのページを[現在のウィンドウとして設定]します。


(2)そして、それぞれのラベル部分を[名前付きタグとして設定]していきます。


(3)[名前付きタグ設定]ステップは、そのままではラベルの表示位置が変わったときに検出できなくなってしまうので、[ファインダー]を修正します。


(4)そして、[タグ名]を項目名に合わせておきます。(下図の場合は「苗字」)


(5)すべてのラベルを[名前付きタグとして設定]できたら、グループ化しておきましょう。

 ※はじめに作った[名前付きタグ設定]ステップをコピペして、1.ステップ名、2.タグパターン、3.タグ名、を変更すると楽ですよー。



【4-4】テキストボックスに入力する

(1)Webページのテキストボックスを右クリック→[変数からテキストを入力]→(入力する変数)をクリックして、[テキストを入力]ステップを作成します。


(2)次に、[テキストを入力]ステップの[ファインダー]を修正します。


《修正前》

[検索範囲]が入力位置の変更に対応できていないので修正が必要。また、[属性名]と[属性値]について、name属性やid属性はページ毎に変更されるので修正が必要。


《修正後》

[検索範囲]を[名前付きタグの後]に変更し、[属性名]と[属性値」はテキストボックスの<input type=”text”>をもとに値を設定。


(3)すべてのテキストボックスに、上記(1)~(2)の方法でテキストを入力します。そして、長々としたステップをグループ化しておきましょう。




(4)次に、[登録]ボタンをクリックするステップを作成します。


(5)そして、[クリック]ステップの[ファインダー]を修正してください。


《修正前》


《修正後》


【4-5】セッションの保存と復元

ここで、先に述べた[セッションの保存]と[セッションの復元]ステップを追加します。が、その前に、せっかくなのでセッション変数を使用しなければどうなるのかを見てみましょう。

まず、エンドポイントをクリックします。そして、繰り返しのイテレーションを進めると、、、、おやっ!おやおやっ!![Round 2]のままですっ!!(しらじらしい)


このままでは結果画面にたどり着かないので、次の手順でセッションの保存と復元を行っていきましょう。


(1)まず、[開始]ボタンクリック後に、[セッションの保存]ステップを追加します。


(2)次に、[名前付きタグ設定]ステップの前に、[セッションの復元]ステップを追加します。


(3)最後に、[登録]ボタンクリック後に、[セッションの保存]ステップを追加します。


これで、繰り返しのイテレーションを進めると[Round 2]→[Round 3]…というふうにカウントアップされるようになりました。


【4-6】スクリーンショットの保存

(1)スクリーンショットを保存するのは10件目の登録が完了した後なので、[登録]ボタンクリック後に[トライステップ]と[値判定]ステップを追加します。

[値判定]ステップの[条件]は「itereation() < 10」を入力、[エラー処理]は[次の代替手段を試行]を選択してください。



(2)次に、[トライステップ]のブランチの下側に、[抽出]→[スクリーンショット抽出]ステップを追加します。

[パディング]は[ページ全体]を選択、[変数]はImage型の変数[スクショ]を選択してください。


(3)そして、[ファイル出力]ステップを追加し、スクリーンショットをPNGファイルとして保存します。[ファイルコンテンツ]は変数[スクショ]を選択、[ファイル名]は任意のファイル名を入力してください。


(4)最後に、[その他]→[エラー生成]ステップを追加して、[エラー処理]は[ループ終了]を選択します。

 ※強制的にループを終了させることができます。



【5】ロボットを実行する

(1)デバッグモードでロボットを実行して、処理が終了したら結果画面の画像を確認してください。



RPAチャレンジのサイト、面白いですよね!

今回はDesign Studioの基本的なステップだけで作りましたが、実はもっと速度UPできる方法があるんです!

DA Editor上でChromiumというウェブブラウザエンジンを使って作るんですが・・・・長くなるのでここではやめときます。。

でも、近いうちに紹介したいなーと思っています (*’ω’*)


22 ファインダー(天気3)

(前回からのつづき)

【お題】

気象庁のホームページから、設定ファイルに入力されている地点の、過去5年間の現在日付と同じ月日の天気情報を取得してExcelファイルに出力する。


《出力する項目》

年、地点名1、地点名2、降水量(mm)、最高気温(℃)、最低気温(℃)、平均風速(m/s)、日照時間(h)


《出力ファイル》

過去の天気_yyyyMMdd.xlsx  ※日付は現在日付


ようやく最終回の今回は、表示されているレイアウトを判別してデータを抽出し、Excelファイルに出力するという処理を作成していきます。

前回も触れましたが、過去の天気情報を抽出する[日ごとの値]ページには、レイアウトが2種類あります。レイアウトは地点によって異なり、下図左(気圧あり)と右(気圧なし)のパターンがあります。そして、それぞれ項目の場所が異なるため、どちらのレイアウトなのかを判別して正しい場所の値を抽出する必要があります。


レイアウトの判別は、[日]の次のタイトルが[気圧(hPa)]か[降水量(mm)]かで行うことにします。


【1】設定ファイルを置き換える

2種類のレイアウトが表示されるように、「weatherpoint2.csv」の地点を次の内容に変更して置き換えてください。

 ※ファイルを置き換えたら、Design Studioの左上にある[更新]ボタンをクリックしてください。

地点名1,地点名2
神奈川県,横浜
愛媛県,大三島

【2】レイアウトを判別する

(1)レイアウトの判別を行うステップは天気情報の取得前に行いますので、まず[天気情報の取得]ステップをクリックします。

次に、タイトル行の[気圧(hPa)]を右クリック→[抽出]→[テキスト]→[新しいシンプル タイプの変数]→[Short Text (シンプル)]をクリックしてください。

そして、新しい変数の[名前]は「項目名」にしておきます。


(2)ここで、追加されたステップ[Extract 項目名]の[ファインダー]を確認すると、「colspan=”2″」になっています。

 ※タグ属性「colspan」は、水平方向のセルの結合数を指定します。


(3)しかし、タイトル[降水量(mm)]は水平方向にセルを3つ結合しているので「colspan=”3″」となり、[Extract 項目名]ステップの抽出対象になりません。


(4)そこで、[ファインダー]を「scope=”colgroup”」に変更します。)

 ※属性「scope」は見出しの対象範囲を指定でき、属性値「colgroup」はそのセルが列グループに対する見出しであることを示します。


(5)次に、タイトルが[気圧(hPa)]かそうでないかを判別して処理を分けるために、トライステップを追加します。


(6)そして、トライステップのすぐ後ろに[変数判定]ステップを追加して、変数[項目名]が「気圧」という文字列を含む場合は処理を続行、そうでない場合は[別の代替手段を試行]とします。



【3】天気情報を抽出する

(1)ここからは、別のレイアウトで表示されている天気情報を抽出していきます。

イテレーションを「2」にして、下の方のエンドポイントをクリックしてください。


(2)あ、すみません。下図の[Set Name Tag 日]ステップを移動させてください。。




(3)(何事もなかったかのように)では、天気情報を抽出していきます。

トライステップの下の矢印のエンドポイントをクリックしてから、抽出ステップを追加していきます。




(4)すべての項目が抽出できたら、ステップをグループ化して、矢印を[Assign 日付]ステップに連結しておきましょう。


【4】Excel出力のためのステップ

Excelファイルを出力するときに追加するステップは次の3つです。

  1. Excel型の変数に見出しを書き込む(初めに1回)
  2. Excel型の変数に明細を書き込む(明細の件数分)
  3. Excel型の変数をExcelファイルに出力する(最後に1回)

【5】Excelファイルを出力する

(1)まず、Excel型のグローバル変数を追加します。


(2)実行日時の取得後に、変数[過去の天気Excel]を開いて見出しを書き込んでいきます。




(3)すべての見出しを書き込んだら、処理をグループ化しておきましょう。そして、ステップ名をわかりやすい名前に変更してください。ここでは、[Excel見出し]にしています。


(4)次に、[天気情報の取得]ステップの後に明細を書き込んでいくのですが、まずは変数[過去の天気Excel]のワークシートを[既定のウィンドウとして設定]して、書き込みできる状態にします。



(5)そして、ワークシートに行を挿入するステップを追加します。


(6)追加した行に[過去天気情報]をセットします。ここで出力する日付は「年」だけで良いので、[日付フォーマット]は「yyyy年」にします。



(7)明細書き込み処理もグループ化しておきましょう。下図では、ステップ名を[Excel明細]にしています。


(8)最後に、Excelファイルを出力するために、設定ファイル繰り返しの[For Each Data Row]ステップの前にブランチを追加します。

このブランチのステップは、処理の最後に1度だけ実行されます。


(9)そして、ファイル出力ステップを追加します。

[ファイル名]は、[コンバータ]で実行日時の書式を「yyyyMMdd」に変換し、テキストを前後に追加してファイルパスを作成します。


《ファイル名の例》

C:\User\xxx\Desctop\過去の天気_yyyyMMdd.xlsx

[ファイルコンテンツ]は[過去の天気Excel]を選択して、[ファイルエンコーディング]は[Windows 日本語 (windows-3 1j)]を選択します。



【6】ロボットを実行する

(1)デバッグモードでロボットを実行して、処理が終了したら次のことを確認してください。

  • ステータス・ビューに過去の天気情報が正しく表示されている。
  • 過去の天気.xlsxが正常に出力されている。


最後に、全体のフロー図を添付しておきます。内容が盛りだくさんだったわりには、これだけ?という感じのステップですね。。


21 ファインダー(天気2)

(前回からのつづき)

【お題】

気象庁のホームページから、設定ファイルに入力されている地点の、過去5年間の現在日付と同じ月日の天気情報を取得してExcelファイルに出力する。


前回は、ファインダーを使って地点を指定し、[過去の気象データ検索]ページを開くところまで作成しました。

今回もファインダーを使って、[年月の選択]のリンク一覧から過去5年間の年月をクリックして、そこから天気情報を抽出するところまで作成します。


【1】実行日付を取得する

ロボットの処理が日をまたいでも検索条件となる日付が途中で変わらないように、処理のはじめに「実行日時」を取得しておきます。そして、現在日時ではなく「実行日時」を基準に過去の日付を取得します。


(1)シンプルタイプの変数を追加します。[名前]には「実行日時」と入力、[グローバル]にチェック、[タイプと初期 / テスト値]は[Date(シンプル)]を選択します。


(2)次に、ロボット・ビューの先頭にステップを追加し、変数[実行日時]に現在日時を入力します。

 ※現在日時は関数 now()で取得できます。


【2】繰り返しを作成する(過去5年分)

(1)エンドポイントの手前に新しいステップを追加します。


(2)[アクションを選択]→[ループ]→[繰り返し]をクリックします。


(3)すると、[Repeat]ステップが追加されますので、そのステップとエンドポイントの間に、ブランチを追加します。


(4)そして、ブランチの先に新しいステップを追加します。


(5)[アクションを選択]→[ループ]→[次へ]をクリックします。


(6)この[Repeat]と[Next]のセットで、繰り返し処理を行うことができます。

 ※詳しくは、Kofaxのヘルプ「Kofax Kapow へようこそ > チュートリアル > アドバンスド チュートリアル > ループの基本 > 次を繰り返し」を参照してください。

 ※Kofaxのビデオも参考になります >>>>> https://player.vimeo.com/video/38922812


【3】西暦年をクリックする

(1)次は、西暦年をクリックするステップを作成しましょう。

上の方のエンドポイントをクリックしてから、[2019年]を右クリック→[クリック]をクリックしてください。


(2)そして、クリックステップのファインダーを変更して、過去5年間をさかのぼれるようにします。

まず、[タグパターン]で[コンバータ]を選択して、[変数を取得]の[変数]は[実行日時]を選択します。

 

(3)次に、実行日時をさかのぼるアクションを追加します。

まず、[タグパターン]の[+]→[日付処理]→[変更日]をクリックします。そして、[変更する入力日付の部分]は[年]を選択して、[量]は[エクスプレッション]で「iteration()」と入力します。さらに、[関数]は[入力日付から量を減算]を選択します。

iteration()は、直前の繰り返し回数を返してくれる関数です。つまり、繰り返し1回目は、2019年から1年を減算して2018年の日付、繰り返し2回目は、2019年から2年を減算して2017年の日付を返してくれます。


(4)ここでは、「yyyy年」形式の値が必要なので、[日付の書式設定]で[フォーマットパターン]を[yyyy年]に変更します。



(5)ステップ名はわかりやすいように、「Click 年」に変更しておきましょう。


(6)そして、エンドポイントをクリックすると、[2018年]がクリックされます。

イテレーションを進めて、[2017年]、[2016年]、[2015年]、のように、西暦年をさかのぼってクリックされることを確認してください。


【4】月をクリックする

(1)ここから、月をクリックするステップを作成していきます。さきほどの西暦年をクリックするステップと似ているので、サクサクッとできると思います。

まず、[1月]を右クリック→[クリック]をクリックしてください。


(2)[ファインダー]の[タグパターン]に、実行日時の「M月」を設定します。


(3)そして、ステップ名を「Click 月」に変更します。


【5】日ごとの値を表示する

(1)エンドポイントをクリックしてから、[20xx年x月の日ごとの値を表示]を右クリック→[クリック]をクリックします。


(2)ステップ名はわかりやすい名前に変更しておきましょう。


【6】日に名前付きタグを設定する

(1)[日ごとの値]の一覧から、どの行(日付)のデータが対象なのか、名前付きタグを設定して目印をつけます。

一覧にある[日]の[1]の部分を右クリック→[その他]→[名前付きタグ]をクリックしてください。


(2)[アクション]タブで[タグ名]に[名前付き]を選択して、[名前]に「日」を入力してください。


(3)そして、[ファインダー]の[タグパターン]に、実行日付の「d」を設定します。



(4)ステップ名は「Set Name Tag 日」に変更しておきましょう。


(5)エンドポイントをクリックすると、日付の部分に青枠と名前付きタグ[日]が表示されます。そして、この青枠を目印にして、この後の抽出処理を行うことになります。


【7】日ごとの値を抽出する

(1)ここからは、青枠の行にある値を抽出していきます。

まず、降水量を右クリック→[抽出]→[テキスト]→[過去天気情報.降水量]をクリックします。


(2)このときの[ファインダー]を確認すると、[検索範囲]は[名前付きタグと同じテーブル行内]、[右と同じテーブル行内]→[日]となっています。

つまり、青枠の名前付きタグ[日]の行から値を抽出しています。


(3)続いて、最高気温、最低気温、平均風速、日照時間の値を抽出します。


(4)そして、[過去天気情報.日付]には、実行日時をもとに[コンバータ]の[日付処理]で、年から iteration()を減算した過去日時を設定します。

 ※詳しくは >>>>> こちら

このとき、時分秒は不要なので、[フォーマットパターン]には「yyyy-MM-dd 00:00:00」と入力してください。


(5)エンドポイントをクリックすると、[過去天気情報]に入力された値が確認できます。


(6)抽出ステップの後には、値返却ステップを追加しておきましょう。


【8】ループ終了処理を追加する

(1)[Repeat]と[Next]で繰り返し処理を行うときに忘れがちなのが、ループ終了処理です。(実は、ここまで忘れてました・・・・)

今回は、「過去5年分」という要件なので、5回繰り返しが終わった時点でループを終了します。

値判定ステップを追加して、[条件]に「iteration() >= 5」と入力、[If]は[条件が満たされています]を選択して、繰り返しが5回目のときにエラー処理が行われるようにします。


(2)そして、[エラー処理]タブの[Then]で[ループ終了]を選択します。これで、繰り返しが5回目のときにループを終了することができます。


【9】ロボットを実行する

デバッグモードでロボットを実行して、処理が終了したらステータス・ビューを確認してください。


【10】ステップをグループ化する

ロボットの実行結果には影響ありませんが、ステップをグループ化して見やすくしておきましょう。


あとは、Excelファイルの出力だけですね!と言いたかったのですが、実は、[日ごとの値]ページにはレイアウトが2種類あります。レイアウトは地点によって異なり、下図左と右のパターンがあります。それぞれ項目の場所が異なるため、どちらのレイアウトなのかを判別して正しい場所の値を抽出する必要があります。

ということで、次回は、表示されているレイアウトを判別してデータを抽出し、Excelファイルに出力するという処理を作成していきます。(ゴールは目前!)


20 ファインダー(天気1)

ブログ冒頭の「Kofax RPAのロボット作りに特別なスキルは必要ありません」という言葉、嘘ではないんです。簡単なロボットを作るだけなら。

でも、複雑なウェブページを扱うときには、HTMLの知識がちょっぴり必要になってきます。

次のHTMLを見て、タグは「div」、タグ属性は「class」ということがわかるでしょうか?

<div class="xxx">こんにちは</div> 

 ※タグとタグ属性については >>>>> こちら 【4-5】で出てきます。


このタグやタグ属性を使って、ロボットはアクションの対象がウェブページのどこにあるかを特定します。

下図は、Yahoo!の検索条件を入力するステップですが、ソース・ビューのHTMLとステップ・ビューの[ファインダー]を見比べてみてください。


《HTML》

<input name="p" id="srchtxt" type="text" autpcomplete="off">
タグ   : id
タグ属性 : srchtxt

《ファインダー》

属性名 : id
属性値 : srchtxt

HTMLのタグとタグ属性、ファインダーの属性名と属性値が、同じ値になっていることがわかりますか?

このファインダーのおかげで、ロボットは検索条件を入力するテキストボックスが、ウェブページのどこにあるか特定することができます。

そして、ファインダーは、ブラウザ・ビューからステップを追加すると自動的に設定され、ほとんどの場合はそのままで問題ありません。

ところが稀に、ファインダーが原因でロボットが正常に動かないことがあります。そんなときは、ソース・ビューを確認しながら、ファインダーを適切に変更しなければなりません。

ということで、ここでスキルアップできそうなお題を出してみようと思います!ちょっと工夫が必要で難しいですが、まずは答えを見ずにやってみてくださいね。

※けっこうなボリュームなので、答え合わせは2~3回にわけます。


【お題】

気象庁のホームページから、設定ファイルに入力されている地点の、過去5年間の現在日付と同じ月日の天気情報を取得してExcelファイルに出力する。


《気象庁のホームページ》

ホーム > 各種データ・資料 > 過去の気象データ検索 > 都府県・地方の選択

   http://www.data.jma.go.jp/obd/stats/etrn/select/prefecture00.php?prec_no=&block_no=&year=&month=&day=&view=


設定ファイルの内容》

次のテキストをコピーしてメモ帳などのテキストエディタに貼り付け、「weatherpoint2.csv」というファイル名で任意の場所に保存してください。

地点名1,地点名2
神奈川県,横浜
東京都,東京
千葉県,銚子

《出力する項目》

年、地点名1、地点名2、降水量(mm)、最高気温(℃)、最低気温(℃)、平均風速(m/s)、日照時間(h)


《出力ファイル》

過去の天気_yyyyMMdd.xlsx  ※日付は現在日付


《ページ遷移イメージ》


《出力ファイルイメージ》


—————————— お題はここまでです ——————————


↓ 以下は答え

↓ 以下は答え

↓ 以下は答え

↓ 以下は答え(しつこい)


【答え】

答えはひとつではないので、出力結果が同じであればOKです。なんなら、この答えよりもスマートなやり方があるかもなので、いろんな方法を試してみてくださいね!


【1】ロボットを新規作成して変数を追加する

(1)新規プロジェクト、もしくは既存のプロジェクトに[過去天気情報.type]を作成し、変数を追加します。


《追加する変数の名前と種類》

名前種類
日付日付(Date)
地点名1ショートテキスト(Short Text)
地点名2ショートテキスト(Short Text)
降水量ショートテキスト(Short Text)
最高気温ショートテキスト(Short Text)
最低気温ショートテキスト(Short Text)
平均風速ショートテキスト(Short Text)
日照時間ショートテキスト(Short Text)


(2)次に、ロボット[過去の天気出力ロボ.robot]を作成して、タイプ[過去天気情報]を追加します。


【2】設定ファイル地点名1のページを開く

(1)設定ファイル(weatherpoint2.csv)を読み込み、気象庁のホームページを開きます。

 ※csvファイルの読み込みは >>>>> こちら


《気象庁のホームページ》

ホーム > 各種データ・資料 > 過去の気象データ検索 > 都府県・地方の選択

   http://www.data.jma.go.jp/obd/stats/etrn/select/prefecture00.php?prec_no=&block_no=&year=&month=&day=&view=



(2)ここで、設定ファイルの地点名1をもとに、ブラウザ・ビューに表示されている地図をクリック・・・・できません。

そこで、ソース・ビューを開いて、リンク先を示すようなタグがないか探してみましょう。

どんなふうに探しても良いのですが・・・・ブラウザ・ビューの地図をクリックすると、ソースビューに緑色の枠(選択部分)が表示されるので、その周辺を探してみることにします。

おや(白々しい)、 <map name=”point”>….</map>というあやしげなタグがありますね。[+]をクリックして開いてみましょう。


(3)すると、「area」というタグがたくさんあります。そして、ブラウザ・ビューの地図にある地点名とタグ属性「alt」の値が一致していて、「href」にリンク先が設定されています。

この部分を使えば、ブラウザ・ビューの地図がクリックできなくても、地点名1のページを開くことができそうです。


(4)それでは、地点名1のページを開くために、ページ読込ステップを追加してください。そして、[アクション]タブの[URL]は、[見つかったタグのURL]を選択してください。

※ブラウザ・ビューの地図はクリックできないので、クリックステップではなく、ページ読込ステップでリンク先のページを開きます。


(5)次に、[ファインダー]を設定します。

下図を参照して、ソース・ビューの 「map」タグ要素の先頭にある「area」タグをクリックしてから、[ステップでこの タグ のみを使用]をクリックします。これで、[タグパス]が設定されます。

 ※先頭でないと[タグパス]に不要なものがついてしまいます。正「.*.div.div.map.area」、誤「.*.div.div.map.area[9]
 ※詳しくは、Kofaxのヘルプ「Kofax Kapow へようこそ > Design Studio > タグ ファインダーの使用 > タグ パス」を参照してください。


(6)そして、次のとおり設定します。

属性名 : alt
属性値 : 次のパターンに一致
      パターン : 過去天気情報.地点名1  ※変数


ここまでで、タグ属性「alt」の値が神奈川県(過去天気情報.地点名1)のリンク先(prefecture.php?prec_no=46….)を読み込む、ということになります。


《参考 HTML》

<map name=point>
<area alt="千葉県" href="prefecture.php?prec_no=45….">
<area alt="神奈川県" href="prefecture.php?prec_no=46….">
<area alt="長野県" href="prefecture.php?prec_no=48….">
<area alt="山梨県" href="prefecture.php?prec_no=49….">
</map>

(7)ステップ名は、わかりやすいように「Load Page 地点名1」に変更しておきましょう。


(8)エンドポイントをクリックすると、神奈川県の[地点の選択]ページが表示されます。



【3】設定ファイル地点名2のページを開く

(1)続いて、設定ファイルの地点名2をもとに、ブラウザ・ビューに表示されている地図をクリック・・・・できないので、さきほどと同じ要領でページを開きます。

まずは、ソース・ビューからリンク先を探します。すると、さきほどと同じように、 <map name=”point”>….</map>というタグが見つかりますので、[+]をクリックして開いてみましょう。


(2)こちらも、さきほどと同じような構成になっています。


(3)地点名1のときの設定を参考にして、地点名2のリンク先を開くステップを追加してください。

  1. ページ読込ステップの追加
  2. [ファインダー]タブ:[タグパス]の設定
  3. [ファインダー]タブ:[属性名]と[属性値]の設定
  4. [基本]タブ:[ステップ名]の変更





(4)エンドポイントをクリックすると、神奈川県横浜市の[過去の気象データ検索]ページが表示されます。


長くなってしまったので、今回はここまでにします。次もまたファインダーを使って、こんどは過去の年月をクリックしていきます。ファインダーだらけですねー。


19 名前付きタグ(天気2)

さっそく、前回の続きを作成していきましょう。

今回は、名前付きタグを使って[〇〇県各地の天気]のリンク一覧をクリックして、天気情報のページを表示します。そして、天気情報をcsvファイルに出力します。


【1】名前付きタグを設定する

(1)まず、設定ファイルの2列目にある地点名を抽出します。

前回作成したロボットを開いて、tenki.jpのページを開くステップ(2つ目の[Load Page])をクリックしてください。

そして、ブラウザ・ビューに表示されている地点名一覧の1行目のColumn 2(藤沢市)を右クリック→[抽出]→[テキスト]→[天気情報.地点名2]をクリックします。


(2)次に、エンドポイントをクリックして、[神奈川県各地の天気]のリンク一覧が見えるようにページを下にスクロールします。

そして、その一覧の先頭にある[横浜市]を右クリック→[その他]→[名前付きタグとして設定]をクリックしてください。


(3)[アクション]タブの[タグ名]は[名前付き]を選択、[名前]は「地点名2」と入力します。


(4)そして、[ファインダー]タブの[タグパターン]に[天気情報.地点名2]を設定します。


(5)[基本]タブの[ステップ名]は、わかりやすいように「Set Name Tag 地点名2」に変更しておきましょう。


(6)エンドポイントをクリックすると、藤沢市の部分に[地点名2]という名前が表示されます。


(7)その[地点名2]を右クリック→[クリック]をクリックしてください。


(8)すると、[Click 藤沢市]というステップが作成されます。わかりやすいように、[ステップ名]を「Click 地点名2」に変更しておいてください。


【2】天気情報を抽出する

(1)ブラウザ・ビューに表示されている天気、最高気温、最低気温をそれぞれ抽出します。




(2)最高気温に「℃」という文字を追加します。

[コンバータ]の左下にある[+]をクリック→[テキストフォーマット]→[テキストを追加]をクリックしてください。


(3)そして、[追加するテキスト]に「℃」を入力して、[追加するテキスト]は[入力テキストの後]を選択します。


(4)最低気温も同じようにしてください。


(5)ステップが長くなったので、2つ目の[Load Page]から最終ステップまでをグループ化して、[天気情報の取得]ステップにします。


(6)そして、イテレーションを進めながら、天気情報の値が正常に抽出されているか確認してください。



【3】天気情報をcsvファイルに出力する

(1)[天気情報の取得]ステップの後ろに、ファイル出力ステップを追加します。

[ファイルコンテンツ]は[コンバータ]で、[+]→[出力値フォーマットの処理]→[CSVに追加」をクリックします。

 ※csvファイル出力は >>>>> こちら

ファイル名(例)     : C:\Users\xxx\Desktop\天気情報.csv
ファイルコンテンツ    : 天気情報 を CSV として追加
ファイルエンコーディング : Windows 日本語 (windows-3 1j)
ファイルに追加      : チェックON
フォーマットを適用する変数: 天気情報


(2)次に、csvファイルのヘッダーを作成するステップを追加します。

さきほど作成した[Write File]ステップをコピーして、[For Each Data Row]ステップの前に貼り付けます。



(3)そして、[ファイルに追加]のチェックを外し、[ヘッダーを作成]にチェックを入れます。


(4)最後に、値返却ステップを追加してロボットを保存してください。


【4】ロボットを実行する

(1)デバッグモードでロボットを実行して、処理が終了したら次のことを確認してください。

  • ステータス・ビューに天気情報が正しく表示されている。
  • 天気情報.csvが正常に出力されている。



前回も書きましたが、名前付きタグを目印に設定することで、その目印内だけでなく、目印の前や後や間などのリンクをクリックできたり、データを抽出できたり・・・・とにかく便利です。ぜひ使いこなせるようになりたいですね。


18 名前付きタグ(天気1)

いきなりですが、「名前付きタグ」は難しいです。実は、あまり自信がなくて、いままで紹介するのをためらっていました。が、なんせ便利なんです。だから紹介してしまいます!


【1】名前付きタグとは

例えば、設定ファイル(csvファイルなど)に入力されている複数の地点の天気予報を検索したいとき。

下図の場合だと、1件目は「東京都」をクリックして、2件目は「大阪府」をクリックすることになりますが、どうすれば設定ファイルの内容や件数が変わっても対応できるでしょうか?


そんなときに便利なのが、名前付きタグです。

名前付きタグを使うと、「東京都」などのリンクを直接クリックするのではなく、前もってクリックしたい場所に目印となる名前をつけておいて、それをクリックすることになります。


・・・・はい、実際にやってみましょう。

 ※詳しく知りたい方は「Kofax Kapow へようこそ > リファレンス > Design Studio > ステップ アクション > 名前付きタグ設定」を参照してください。


【2】作成するロボットの概要

tenki.jpのページから、設定ファイルに入力されている地点の天気予報をcsvファイルに出力する。

《tenki.jpのURL》

  https://tenki.jp/



【3】ロボット作りの事前準備

はじめに、設定ファイルを作成します。次のテキストをコピーしてメモ帳などのテキストエディタに貼り付け、「weatherpoint.csv」というファイル名で任意の場所に保存してください。

《設定ファイルの内容》

神奈川県,藤沢市
東京都,渋谷区
大阪府,大阪市
岡山県,倉敷市

《保存先の例》

C:\Users\xxx\Desktop\weatherpoint.csv

【4】ロボットを作成する

【4-1】ロボットを新規作成して変数を追加する

(1)新規プロジェクト、もしくは既存のプロジェクトに[天気情報.type]を作成し、変数を追加します。


《追加する変数の名前と種類》

名前種類
地点名1ショートテキスト(Short Text)
地点名2ショートテキスト(Short Text)
天気ショートテキスト(Short Text)
最高気温ショートテキスト(Short Text)
最低気温ショートテキスト(Short Text)

(2)タイプ(変数)が作成できたら、画面左上の[保存]をクリックしてください。


(3)次に、ロボットを作成します。[ロボットを開始するURL]には、tenki.jpのURLを入力してください。

《tenki.jpのURL》

   https://tenki.jp/




(4)すると、次のようなエラーメッセージが表示されて、ページを開くことができません。


(5)そこで、画面左上の[ロボット設定]をクリックして、[SSL/TLS]の設定を変更します。

《変更前》

TLS hello を使用、TLS 1.0 のみ受け入れ(非セキュア)

《変更後》

TLS hello を使用、TLS 1.2 のみを受け入れ



(6)次に、タイプ(変数)の[天気情報]を追加します


【4-2】設定ファイル(csvファイル)を読み込む

(1)新しいステップを追加して、[アクションを選択]→[ファイルシステム]→[ファイル読込]をクリックします。[ファイル名]は、設定ファイルのフルパスを入力してください。

《ファイル名の例》

C:\Users\xxx\Desktop\weatherpoint.csv



(2)エンドポイントをクリックすると、ブラウザ・ビューに設定ファイルの内容(地点名一覧)が表示されます。地点名一覧にはヘッダーがないので、画面下の[ヘッダーを使用]のチェックを外してください。


(3)そして、[アクション]をクリック→[開く(読み取り専用)]をクリックします。


(4)次に、地点名一覧を右クリック→[データ行繰り返し]をクリックします。


(5)そして、1行目のColumn 1(神奈川県)を右クリック→[抽出]→[テキスト]→[天気情報.地点名1]をクリックします。


(6)ここで、ちょっと、すみません、ま、間違えました。

ステップ・ビューの最初にある[Load Page]をエンドポイントの手前に移動させてください。ステップを切り取り&貼り付け、もしくは、マウスでドラッグして移動してください。すみません。。



【4-3】名前付きタグを設定する

(1)エンドポイントをクリックすると、ブラウザ・ビューに tenki.jpのページが表示されます。そして、そのページを下へスクロールすると、[各地の天気]というリンク一覧があります。

設定ファイルの地点名をもとに、ここに表示されている都道府県名(北海道は、道北・道東・道央・道南)のリンクをクリックするわけですが、直接クリックするのではなく、まずはクリックしたい場所に目印となる名前をつけます。

それでは、実際にやってみましょう。[道北]を右クリック→[その他]→[名前付きタグとして設定]をクリックしてください。

 ※なぜ、「道北」なのか。それは、リンク一覧の先頭だからです。先頭だと、タグパスが・・・・うっ、これ以上の説明は難しくてできません。詳しくは、Kofaxのヘルプ「Kofax Kapow へようこそ > Design Studio > タグ ファインダーの使用 > タグ パス」を参照してください。


(2)そして、[アクション]タブの[タグ名]は[名前付き]を選択、[名前]は「地点名」と入力してください。


(3)次に、[ファインダー]タブの[タグパターン]に[天気情報.地点名1]を設定します。



(4)そして、エンドポイントをクリックすると、神奈川県の部分に[地点名]という名前が表示されます。


(5)その[地点名]を右クリック→[クリック]をクリックしてください。


(6)神奈川県の天気のページが表示されました。


(7)ここで、[Set Name Tag]ステップと、[Click 神奈川県]ステップをわかりやすい名前に変えてから、画面左上の[すべて保存]をクリックしておきましょう。

《例》

Set Name Tag → Set Name Tag 地点名
Click 神奈川県 → Click 地点名


(8)そして、イテレーションを進めて、設定ファイルの地点名のページが順番に表示されるか確認してください。


(9)今回のロボット作りはここまでにして、続きは次回がんばります。

最後に、名前付きタグありと、名前付きタグなしのファインダーを比べてみましょう。

名前付きタグありのファインダーには、[地点名]という目印だけが設定されています。一方、名前付きタグなしのファインダーには、神奈川県のリンクの場所が固定値で設定されています。こちらは、設定ファイルが変わると対応できません。


名前付きタグは、使いこなせればとても便利です。名前付きタグを目印に設定することで、その目印内だけでなく、目印の前や後や間などのリンクをクリックできたり、データを抽出できたり・・・・とにかく便利なのです。

時間があれば、設定ファイルの Column 2の地点名を使って、[〇〇県各地の天気]のリンク一覧をクリックして、天気予報情報の抽出とcsvファイル出力までやってみてください。答え合わせは次回の記事で。

 ※デザインモードで開発中に設定ファイルを変更したら、画面左上の[更新]をクリックしてキャッシュを削除してくださいね。


17 パラメータの使用

パラメータって何?と思っていても、ロボットを作ってみたらわかります!

パラメータがどんなものか気になってロボット作りどころでは・・・・という方は、こちらのサイトを見てみてくださいね。


【1】タイプ(変数)を作成する

(1)新規プロジェクトを作成してから、パラメータ用のタイプ(変数)を作ります。タイプ名は、「パラメータ情報.type」と入力してください。


(2)次に、タイプ[パラメータ情報]に、変数を追加します。

名前     : 出力メッセージ
タイプ    : ショートテキスト
デフォルト値 : ここに入力したメッセージが出力されます。


【2】ロボットを作成する

(1)「パラメータ出力ロボ.robot」というロボットを新規作成してください。


(2)次に、さきほど作成したタイプ[パラメータ情報]をロボットに追加します。このとき、[パラメータとして使用]にチェックを入れてください。


(3)続いて、ロボットにファイル出力ステップを追加します。

ファイル名(例)     : C:\Users\xxx\Desktop\パラメータ出力.txt
ファイルコンテンツ    : 変数[パラメータ情報.出力メッセージ]
ファイルエンコーディング : [Windows 日本語 (windows3 1j)]




(4)最後に、値返却ステップを追加したら、ロボットは完成です。忘れずに、保存しましょう。


【3】ロボットを実行する

(1)デバッグモードの画面を見ると、ステータス・ビューに[入力(変数)]と[出力(戻り値)]が表示されています。

この[入力(変数)]がパラメータで、値を変えて実行時することができます。

まずは、そのまま実行してみてください。


(2)処理が終了したら、ステータス・ビューと、出力されたテキストファイルを確認してください。

パラメータの値が出力されていますか?



(3)次に、パラメータの値を変更してから実行してみてください。


(4)ステータス・ビューとテキストファイルには、変更したパラメータの値が出力されましたか?



【4】ロボットをカプレットに登録する

(1)まず、ロボットを Management Consoleにアップロードします。

 ※ロボットのアップロード方法は >>>>> こちら


(2)次に、カプレットを新規作成して、アップロードしたロボットを登録します。

ロボット登録時に、パラメータを固定値にするかユーザー入力値にするかを選択するプルダウンメニューが表示されます。今回は、[user input]を選択してください。

 ※カプレットの作成方法、ロボットの登録方法は >>>>> こちら


(3)パラメータを入力するテキストボックス[出力メッセージ]には、初期表示する値を設定しておくと便利です。


【5】ロボットをカプレットから実行する

(1)作成したカプレットを開くと、テキストボックス[出力メッセージ]が表示されています。

 ※カプレットの実行方法も >>>>> こちら


(2)テキストボックスの内容を「カプレットから☆」に変更して実行してみましょう。

そして、処理が終了したら、テキストファイルの内容を確認してください。「カプレットから☆」と出力されていますか?



パラメータを使うと、ロボットを変更せずにパラメータの値で処理を変えることができるので、とても便利です。

例えば、パラメータに日付を入力すると、その日のニュース記事を一覧で出力してくれるロボット、なんていうのもおもしろそうですね。