はじめに
やることはタイトルのままです。
BizRobo!のDS内蔵ブラウザであるWebkitでは開けないWebページは、DAエディタ側で編集する内蔵ブラウザであるChromiumや直接デスクトップ上のブラウザを起動して操作することになりますが、DS内のエディターとは操作の勝手が異なるので慣れていない方には難しい場合もあります。
私もDS内でできる処理はなるべくDS内で行うようにしています。
そこで、操作したいページ上での操作が情報抽出だけであれば、DA上で行わず、DSで行ってしまおうというのが今回の記事です。
今回、BizRobo!は記事執筆時点で最新のv11.5.0.5を使用します。
v11.5に慣れる意味でもやってみます。
使用するWebページについて
全く無関係のサイトから抽出するのもあれなので、
今回はオープン社の方が紹介されていた以下練習用ページを使わせていただきます。
表示されているカードの出典をループで集計する
https://codepen.io/glrchallenge/full/abQjaed
参考記事:
https://qiita.com/ParakeetOnTheHead/items/058ee1be6e079a503bf2
こちらのページのお題は「表示されているカードの出典別の写真数を集計してテキストボックスに数値を入力してください」となっています。
想定としてはDAステップ内で完結させる前提なのでしょうけど、敢えてDS内にリストを持ってきてから集計してみようと思います。
集計自体はどうやってやろうが結果は同じですからね。
DSでの値取得方法
こちらの課題をDSで実施する場合の処理の流れとしては、以下のようになります。
他の方法もある気がしますが、ややこしくなりそうなので一旦忘れておきます。
この課題をDSで実施する場合の処理の流れは以下の通りです。
- Chromiumで目的のWebページを開く
- 値を取得したい箇所のHTMLを変数に格納
- 取得した変数値をリターンステップでDSに返す
- DS内でHTMLを開く
- ループ処理で値を取得する
- どの出典かを条件判定で確認
- 判定結果によって分岐し、それぞれの写真数をインクリメントする
今回のお題はあくまでChromimで開いたページの値をDSで抽出することなので、それ以外の部分は省きます。
取り上げていない箇所が分からない場合、適宜ヘルプを確認するかeラーニング等で学習ください。
値を取得したい箇所のHTMLを変数に取得
Webページはすでに開いている前提で進めます。
今回、各カード中の値を抽出するお題なので、全てのカードから値を抽出できるように全カードが入っているタグの箇所をすべて取得しておく必要があります。
赤枠の部分ですね。
右クリックメニューから
[XML文字列としてツリーを次へ抽出] ⇒ [拡張属性を次へ含める] or [拡張属性を次から除外]
を選択します。
拡張属性はどちらでも構いません。他のページを扱う場合は、適宜選択してください。
変数を事前に作成していない場合は[変数を作成]から作成してください。
今回は事前にHTMLという名前のテキスト変数を作成しているので既存変数を選択しました。
抽出が成功したらリターンステップで先ほど抽出した変数を選択してDSに値を返せるようにします。
DS内でHTMLを開く
DSに値を戻せたら、そのHTMLをもとにHTMLページをWebkitブラウザで開きます。
DSでは、HTMLをもとにページを作成する機能があるのでそちらを使用します。
新しいアクションステップを追加し、以下のように[ページ生成]を選択します。
アクションが選択できたら、コンテンツを変数に切り替え、DSで受け取ったHTMLが入っている変数を選択します。
ページURLは今回適当ですが、任意で入れられます。
ステップを進めると、このようにDS内のブラウザで表示できます。
あとは[タグ繰り返し]を使ってカード毎のループ処理をつくり、それぞれの出展の数を数えていけばできあがりです。
さいごに
最近のバージョンはそうでもないのですが、昔のBizRobo!バージョンではDAステップ内のエディタが不親切だったり扱いにくかったりがあり、動作安定性も含めてDS内でどうにかしたいと試行錯誤していたことがありました。
その中で見つけた方法の一つが今回紹介した方法です。
最近はDAのエディタも親切になり、動作安定性も含めて扱いやすくなりましたので、このような回りくどいことをする必要もないかもしれません。
ツリーの変更停止などのガードチョイスを入れた際に自動的にタイムアウトも入るようになったのとか地味に嬉しいポイントです。
今回BizRobo!v11.5を触ってみましたが、DAロボットだけで独立して動かせるようになったことで、テスト値を入れておけばDSからInput値を入れることなく開発やテスト実行ができるようになり、親切になったなと思います。
慣れるまではあれ?ってなるかもしれませんが、何事もとにかく触ってみるしかありません。