見出し画像

【UiPath StudioXの遊びかた25】逐条編㉒YouTubeで遊ぼう⑩~セルの値を読み込みで遊ぼう~パターンで抜き出したURLに繰り返しアクセスしてさらにデータを抜いていこう。

さてと、前回

でソースを見やすくまとめて整理する

グループ

でいったん整理はしたので、本題に戻って、

YouTubeでいったん今までで抜いてきた各URLを開いて、一覧を抜いてさらにまとめる操作をやってみよ( ´∀` )

正直言って、

でやった

シートのクリア

も、今やってるソースで、

重複を削除

で、綺麗に処理結果は整理されるから要らないので~~~

コイツで
てな感じで無効化💃

処理をこれまでのところでいったん止めたいので~~~

てな感じでいったんメッセージボックスをココに追加

でいったん実行

にしといて
保存できたことを確認
てな感じでURLも複数今回も抜けてることを確認

と、ここから

今回やりたいこと

の最後で示したとおり、

これまでに作ったソースで、

UiPath  StudioXで検索した検索結果のページで

4つのパターンにヒットするURLは抜けた

ので、さらに重複削除をして残った

各URLにアクセス

して、

各リンク先の右側にある

まとめ動画のリストのタイトルとURL=パターン①
動画リスト以外の普通の関連動画のリスト=パターン②

のタイトルとURLを一気に抜いて、全て同じExcelシートの最終行に追加し、重複を削除して、ブックを保存したい。

やりたい流れを纏めると、、、

  1. YouTubeで検索結果のサイトから4つのパターンのリンク先を処理年月シートに出力

  2. 出力結果のB列の重複行を削除

  3. ブックをいったん保存☜前回までの処理

  4. 抜き出した各URLに2行目以降~最終行まで行数分、繰り返しアクセス

  5. アクセスしたリンク先のページの今回示したパターン①とパターン②に該当する関連動画のタイトルとURLを抽出

  6. 抽出結果を、処理年月シートの最終行以降に、繰り返し追記

  7. 最後まで繰り返したら、B列が重複する行を再度削除

  8. ブック全体を保存

てな感じで、

てな感じだったのを、
てな感じ

で、

次のリンク先で2つのパターンにマッチする関連動画までを
ひとつのシートにまとめたいだけ( ´∀` )

処理時間も

てな感じで350個くらいのURLを抜いてきてるのに、

17分くらい( ´∀` )

さすがにこんだけ情報量が動画あれば、

下手な本を買うよりも、最新の情報で人気の高い順でといった感じで、

情報量が抜け出せるからね。

しかも、変数なんかで動的にやっているから、

固定値やハードコーディングなんかで情報がいつの間にか

  • 陳腐化したり、古くなることもなく、

  • 第1段階の4つのパターン☞第2段階の2つのパターン

  • に関するものが常に実行時点で最新の状態で

  • 処理年月シートにまとめられる

って感じになるからね( ´∀` )

そんなのロボットでやらなくても、手作業でやればいい

ってタカをくくってる人も居そうだけど、

これを手作業でタイトルとURLを一個一個コピーして
Excelに記入してく

って手作業でやると、どんだけ時間がかかるだろうね( ´∀` )

て、書いちゃうと、

すっごく難しいこととか高度なことをやるのか、、、((+_+))

って思う人も居るかもしれないけど、

今回新たに使うアクティビティは、

コイツと
コイツと
コイツ

を使う程度

※Studioみたいに、

シートのB列セルのデータを一気に取得してデータテーブルを使って、、、って感じでやりたいところなんだけど、どうやらStudioXだと小難しそうなので~~~

じゃ、早速、組み込み~~~

と、その前にちょっと練習帳Excelブックの処理年月以外のシート

対象11みたいなシートな

が邪魔になってきたので~~~

余計なシートは使わないので、全選択して~~~
右クリック>削除~~~
てな感じで削除しておこう💃

ここでポイント①:毎回言ってることだけど、

ソース・リファクタリング

で、

無駄なモノや使わなくなったものは、削除するかコメントアウトしとこう

ってソースに関してはゆーてるんだけど、処理に関するものは、

ソースだけじゃなく、Excelシートやノートブックも絡んでくるし、
ロボットは作った人だけじゃなく、組織で使うことも多いので
☞第3者が見ても理解しやすいように

どんどん、余計なモノは積極的に消し込んでいこう
(ただし、必要なモノまで思い込みで消さないように
細心の注意を払って( ´∀` ))

てな感じで、事前準備OKなのでんだば、いよいよソースを

まずは、前回やったグループアクティビティで、

重複を削除とブックを保存は、別の場所で再登場する

ので、

てな感じでひとつのグループにまとめとく( ´∀` )
で、てな感じで、繰り返し(Excelの各行)アクティビティをセット~~~
対象範囲をてな感じで順番にセットして、
カスタム入力
ちょっと前の記事でやったのと同様に、
シートのラジオボタンを左クリックして
+>変数を使用>変数の順番で左クリックして、
処理年月シート名を左クリック
ここまできたら、保存ボタンを左クリックして
てな感じな
でセルの値を読み込みを
てな感じでまずはセットして~~~
ココはカスタム入力だと面倒くさいので、
詳細エディターを選択して、
要は、第1段階でB列に書き込んだ
URLの値を引っ張ってこれればいいので~~~
M_Kaku堂練習帳.Sheet(処理年月シート名).Cell("B" & CurrentIndex)
//ブック名.シート名.セルの値(B列の現在の行)

って感じで、

開いた式エディターにまんまコードをはめ込んであげてOK
で、保存先に、B列の各行の値をはめ込む変数を新たに作ってあげて
てな感じでセットしてOKを左クリック
データマネージャを見ると、
データ型がおかしなことになっているので、
Stringを選んであげて
てな感じ
で、メッセージボックスにさっき作った変数B列のURLをセット
てな感じ

で、いったん実行してみて、

どんな値がメッセージボックスに表示されるかを確認

URL=B列の1行目が出て来てんね( ´∀` )
念のため、てな感じで変更して確認してみると、、、
案の定、1が出て来てんね( ´∀` )

てことは、1行目はURLアドレスじゃなくてタイトルなので、読み込まなきゃいいだけの話なので、

前やったIf文を

てな感じではめ込んであげて~~~
+マークの左横をクリックして詳細エディターを開き
出てくる条件ビルダーを
てな感じにして、保存を左クリックして
現在の行数が1より大きかったら読み込んで、1以下であれば、スキップすればいいだけの話
☞てな感じで組み込み( ´∀` )

ここでポイント②:やり方は自由ではあるので、

ここもよく、最初の行を変数にはめ込んで~とか、セルの読み込ませる位置を2行目からとかでややこしくしようとする人がいるんだけど、

ソースにしろ、コードにしろ、シンプルイズビューティフル

なんで、

ただ、1行目をスキップすればいいのであれば、スキップさせればいい

だけの話。

逆に、

M_Kaku堂練習帳.Sheet(処理年月シート名).Cell("B" & CurrentIndex)
//ブック名.シート名.セルの値(B列の現在の行)

をif文を使わずに

M_Kaku堂練習帳.Sheet(処理年月シート名).Cell("B" & CurrentIndex + 1)
//ブック名.シート名.セルの値(B列の現在の行)

なんかで試しにやってみ( ´∀` )
☞最終行までしか繰り返さなくていいはずなのに、

  • 行数+1回分まで読み込む=最終行の次の行が空欄なのに、

  • その値でWEBにアクセスしたらどーなるだろうね( ´∀` )

  • ☞空のURLを開きに行くから確実にエラーになるんだよね( ´∀` )

  • 実際に動かしながら作らない=机上デバッグで頭でしかコードを書かない連中がよくやること( ´∀` )

さてと、本題に戻って~~~

てな感じで

実行してみると、、、

てな
てな感じで、URLが出てくるので~~~
第1段階で実行したURLと同じことを確認出来たら~~~

処理を止めずに何行目を実行したかを知りたいので、

てな感じで、今のメッセージボックスは、WriteLineに変更

後は、これまでにやった表抽出

なんかの要領で、

てな
てな
てな感じで~~~

さらに~~~

操作の冒頭にやったグループ化した重複削除と保存を
てな感じにして

実行してみると、、、(出来るかドキドキ👀💦)

最終行がどんどん更新されて、果てしなく無限ループになりそうな予感
って実行結果になったので~~~(確かに冒頭の345行は抜けすぎ( ´∀` ))

繰り返しの上限は、第1段階の最大行数分繰り返したら、繰り返しを終了するように、

てな感じで繰り返しの上限を設けるようにして( ´∀` )

さらに、

繰り返し(Excelの各行)の条件式の中にてな感じでもうひとつif文を入れて
てな感じで上限数以下の場合のみ、読み込みを繰り返すようにして、
ここまでで作ったセルの値を読み込む以降の処理をひとつのグループにして
Thenに入れる
繰り返し上限値を超えたら、繰り返しをやめるように、
コイツを
Elseにセット

で、再度実行してみると、、、

てな感じで、重複行も削除したうえで、
きちんとデータが抜けてる様子( ´∀` )

ま、実は、Studioだと

  • ブレークポイント

  • ローカルでデータ検証

  • Whileアクティビティ

  • COMPLETE

などがあるので、ここまでややこしい操作にはならないんだけど、オイラが知らないから、ここまでやり込むしかなかったねえ( ´∀` )

裏を返せば、

StudioX側を知らないながらも、ここまでは、
結構簡単に作り込めるってこと( ´∀` )
てか、

まででも書いてるとおり、

StudioXは中途半端な上に、やりくりが面倒くさい

ので、

Studioで普段やり慣れてるに人間からしたら、本当にメリットを感じない。
☞制約が強すぎる
=初心者向けだの市民開発だのゆーてるみたいだけど、
結局、もはやStudioと変わらない感じになってきてるので、
なんでこんな中途半端なものを初心者向けとか開発しやすいとかゆーて
初めてやる人に勧めてるのか意味不明( ´∀` )

ここでポイント③:セルの値を読み込みの「書式付きテキストを取得」に✓が初期値で入ってんだけど、

こいつは、あまり✓が入っていることで良かった試しがないので
てな感じで✓は外しておこう

以上。

動かしたことがない素人さんへ:表抽出機能全般の最大の欠点

表抽出機能は、実は

実行するタイミングによって要素が全く取れない

ってことがよくあるので、そんなときはあんまり深く考えずに、

素直に、要素を取り直した方が早い( ´∀` )

UiPathが知ってか知らずかは知らないけど、
オイラがUiPathで業務を始めた頃から頻繁に起こってるバグなので、

ま、なぜか理由は知らないし、UiPath自体が気づいて放置してるのかも知らないけどね~~~~

成熟してない開発環境なんで、機能があるからって常に完璧に動く
なんて勝手に妄信しないこと( ´∀` )

現場でもこの前は取れていたのに、実行しなおしたら全く抽出が機能しない
☞表抽出で取り直したらなぜかうまく行った。それ以外何もしてないのに、、、👀💦

なんてしょっちゅうあったからね( ´∀` )

対策としては、

  • セレクターのidxみたいな可変部分に

  • 変数噛ませて、

  • UIExplorerなんかで編集して、

  • 要素を取得を繰り返す

みたいな感じで表抽出機能使わずにやったりしてたけど、そこまで複雑なことをやるなら結局、もはや

StudioXではなく、Studioでやれや( ´∀` )

なんで( ´∀` )ま、それも踏まえて、

  • シートをクリアせずに、

  • 取得出来た情報を

  • 同じシートに最終行に追記して

  • 重複行も削除させて、

情報を蓄積させてくようにしてんだけどね笑😆今しがた実行しなおしたら

てな感じ( ´∀` )

動作が安定しないからなあ( ´∀` )
☞ロボットとして致命的な欠陥でしょ( ´∀` )

と思って作ったんだけど、

シートクリアを頭に入れておかないと、第2段階の繰り返し回数の上限が蓄積された行数になっちゃうので、やっぱり入れておいて、履歴として蓄積せずに、毎回ゼロから取りに行かせた方がいいことを発見( ´∀` )

てか別シートかブックかなんかに履歴として転記させておいた方がいいね( ´∀` )

機会があればこの転記機能もロボットに絡ませよう( ´∀` )

リファクタリング後


てな感じ

さてと、次回からは

YouTubeでも、ここまでは出来ることは示せたけど、さすがに情報をここまで抜いたら、後は

気になるものを自分でアクセスして学習すればいいし、
動画自体をどうこうする機能はロボットにはないので~~~
クリックして再生させる程度
☞手動で見たいときにやれや( ´∀` )

程度なので、

UiPathの機能に向かないYouTubeでの操作はここまで( ´∀` )
☞てか、いい加減飽きてきた💦
表抽出は構造が複雑なYouTubeみたいな
WEBサイトにはマジで向かない。

なので、次回からは、

オイラがよく確認してる

Yahoo!経済ニュース

を使った遊びを楽しもう💃

ま、普段がTVすらほぼ見ないアナログ人間なので、

  • YouTube

  • Yahoo

  • note

  • メルカリ

くらいしかデジタルは使わないもので( ´∀` )
ネットとかスマホとにらめっこするよりも、

新聞や文藝春秋、本なんかの活字を読んでる方がよっぽど楽しい( ´∀` )

んだばまた~~~

この記事が気に入ったらサポートをしてみませんか?