![見出し画像](https://assets.st-note.com/production/uploads/images/147909808/rectangle_large_type_2_f06066314624f45874135c75672d06d0.png?width=1200)
【UiPath StudioXの遊びかた25】逐条編㉒YouTubeで遊ぼう⑩~セルの値を読み込みで遊ぼう~パターンで抜き出したURLに繰り返しアクセスしてさらにデータを抜いていこう。
さてと、前回
でソースを見やすくまとめて整理する
グループ
でいったん整理はしたので、本題に戻って、
YouTubeでいったん今までで抜いてきた各URLを開いて、一覧を抜いてさらにまとめる操作をやってみよ( ´∀` )
正直言って、
でやった
シートのクリア
も、今やってるソースで、
重複を削除
で、綺麗に処理結果は整理されるから要らないので~~~
![](https://assets.st-note.com/img/1721460963970-ER1EVKL9It.png?width=1200)
![](https://assets.st-note.com/img/1721460989755-V1Wa4VNLIH.png?width=1200)
処理をこれまでのところでいったん止めたいので~~~
![](https://assets.st-note.com/img/1721461065527-aEG6EoZ5mV.png?width=1200)
でいったん実行
![](https://assets.st-note.com/img/1721461267950-XdGzFSyODU.png?width=1200)
![](https://assets.st-note.com/img/1721461332570-F1n0LP7rI5.png?width=1200)
![](https://assets.st-note.com/img/1721461394092-SkHfD75TTy.png?width=1200)
と、ここから
今回やりたいこと
の最後で示したとおり、
これまでに作ったソースで、
UiPath StudioXで検索した検索結果のページで
4つのパターンにヒットするURLは抜けた
ので、さらに重複削除をして残った
各URLにアクセス
して、
各リンク先の右側にある
![](https://assets.st-note.com/img/1721467416798-RHkMIiZDHT.png?width=1200)
![](https://assets.st-note.com/img/1721467463370-aaqi14ql8b.png?width=1200)
のタイトルとURLを一気に抜いて、全て同じExcelシートの最終行に追加し、重複を削除して、ブックを保存したい。
やりたい流れを纏めると、、、
YouTubeで検索結果のサイトから4つのパターンのリンク先を処理年月シートに出力
出力結果のB列の重複行を削除
ブックをいったん保存☜前回までの処理
抜き出した各URLに2行目以降~最終行まで行数分、繰り返しアクセス
アクセスしたリンク先のページの今回示したパターン①とパターン②に該当する関連動画のタイトルとURLを抽出
抽出結果を、処理年月シートの最終行以降に、繰り返し追記
最後まで繰り返したら、B列が重複する行を再度削除
ブック全体を保存
てな感じで、
![](https://assets.st-note.com/img/1721461394092-SkHfD75TTy.png?width=1200)
![](https://assets.st-note.com/img/1721467908959-n3s7Fww9ZL.png?width=1200)
で、
次のリンク先で2つのパターンにマッチする関連動画までを
ひとつのシートにまとめたいだけ( ´∀` )
処理時間も
![](https://assets.st-note.com/img/1721469049980-UfgOCSZFbr.png?width=1200)
17分くらい( ´∀` )
さすがにこんだけ情報量が動画あれば、
下手な本を買うよりも、最新の情報で人気の高い順でといった感じで、
情報量が抜け出せるからね。
しかも、変数なんかで動的にやっているから、
固定値やハードコーディングなんかで情報がいつの間にか
陳腐化したり、古くなることもなく、
第1段階の4つのパターン☞第2段階の2つのパターン
に関するものが常に実行時点で最新の状態で
処理年月シートにまとめられる
って感じになるからね( ´∀` )
そんなのロボットでやらなくても、手作業でやればいい
ってタカをくくってる人も居そうだけど、
これを手作業でタイトルとURLを一個一個コピーして
Excelに記入してく
って手作業でやると、どんだけ時間がかかるだろうね( ´∀` )
て、書いちゃうと、
すっごく難しいこととか高度なことをやるのか、、、((+_+))
って思う人も居るかもしれないけど、
今回新たに使うアクティビティは、
![](https://assets.st-note.com/img/1721469601153-rF6c57uQZM.png)
![](https://assets.st-note.com/img/1721469641181-9n4iY7qopD.png)
![](https://assets.st-note.com/img/1721469717277-z4l2pprZJy.png)
を使う程度
※Studioみたいに、
シートのB列セルのデータを一気に取得してデータテーブルを使って、、、って感じでやりたいところなんだけど、どうやらStudioXだと小難しそうなので~~~
じゃ、早速、組み込み~~~
と、その前にちょっと練習帳Excelブックの処理年月以外のシート
![](https://assets.st-note.com/img/1721469804954-4f6n2MiN9b.png)
が邪魔になってきたので~~~
![](https://assets.st-note.com/img/1721469880348-HdN1cEYvzH.png?width=1200)
![](https://assets.st-note.com/img/1721469916161-1hm6D3Euhn.png?width=1200)
![](https://assets.st-note.com/img/1721469950519-ZPhrZ34FSk.png?width=1200)
ここでポイント①:毎回言ってることだけど、
ソース・リファクタリング
で、
無駄なモノや使わなくなったものは、削除するかコメントアウトしとこう
ってソースに関してはゆーてるんだけど、処理に関するものは、
ソースだけじゃなく、Excelシートやノートブックも絡んでくるし、
ロボットは作った人だけじゃなく、組織で使うことも多いので
☞第3者が見ても理解しやすいように
どんどん、余計なモノは積極的に消し込んでいこう
(ただし、必要なモノまで思い込みで消さないように
細心の注意を払って( ´∀` ))
てな感じで、事前準備OKなのでんだば、いよいよソースを
まずは、前回やったグループアクティビティで、
重複を削除とブックを保存は、別の場所で再登場する
ので、
![](https://assets.st-note.com/img/1721470333765-1S4Zv3VKkV.png)
![](https://assets.st-note.com/img/1721470373905-tmCueVm9K7.png?width=1200)
![](https://assets.st-note.com/img/1721470412712-IpJbnfBLgb.png?width=1200)
カスタム入力
![](https://assets.st-note.com/img/1721470466295-3CB8OG5c1o.png?width=1200)
![](https://assets.st-note.com/img/1721470774860-duSSu1TMp0.png?width=1200)
+>変数を使用>変数の順番で左クリックして、
処理年月シート名を左クリック
![](https://assets.st-note.com/img/1721470861185-umD5pvYJ1E.png)
![](https://assets.st-note.com/img/1721470898296-w3OOKOhM6z.png)
![](https://assets.st-note.com/img/1721470954548-YM0iXqpxz0.png)
![](https://assets.st-note.com/img/1721471021731-e1N2STLpoL.png?width=1200)
![](https://assets.st-note.com/img/1721471178293-h4rZCO3m1b.png?width=1200)
詳細エディターを選択して、
![](https://assets.st-note.com/img/1721471262537-la6hFLsNDr.png?width=1200)
URLの値を引っ張ってこれればいいので~~~
M_Kaku堂練習帳.Sheet(処理年月シート名).Cell("B" & CurrentIndex)
//ブック名.シート名.セルの値(B列の現在の行)
って感じで、
![](https://assets.st-note.com/img/1721471439261-9TlcGEVlNu.png?width=1200)
![](https://assets.st-note.com/img/1721471519154-bB8McZDBcV.png?width=1200)
![](https://assets.st-note.com/img/1721471585639-wk75bQXleZ.png)
![](https://assets.st-note.com/img/1721471684380-ISMVBptx0H.png)
データ型がおかしなことになっているので、
![](https://assets.st-note.com/img/1721471729974-vN3svOzzf4.png)
![](https://assets.st-note.com/img/1721471761720-aw4lV2wmH5.png)
![](https://assets.st-note.com/img/1721471791478-9AToiRLGN1.png?width=1200)
![](https://assets.st-note.com/img/1721471848133-vyuhyWsXWu.png?width=1200)
で、いったん実行してみて、
どんな値がメッセージボックスに表示されるかを確認
![](https://assets.st-note.com/img/1721472194529-1C6IIi3EXp.png?width=1200)
![](https://assets.st-note.com/img/1721472268479-91L6lb3hht.png?width=1200)
![](https://assets.st-note.com/img/1721472411730-Vjgjq1dDV0.png?width=1200)
てことは、1行目はURLアドレスじゃなくてタイトルなので、読み込まなきゃいいだけの話なので、
前やったIf文を
![](https://assets.st-note.com/img/1721472529540-fbdmpqCEWi.png)
![](https://assets.st-note.com/img/1721472615044-NmQqNKJI26.png)
![](https://assets.st-note.com/img/1721472674352-7a4ZdSvNIC.png?width=1200)
![](https://assets.st-note.com/img/1721472729177-T9lQfI0Ecc.png?width=1200)
![](https://assets.st-note.com/img/1721472861998-3yR3d2YSsL.png?width=1200)
☞てな感じで組み込み( ´∀` )
ここでポイント②:やり方は自由ではあるので、
ここもよく、最初の行を変数にはめ込んで~とか、セルの読み込ませる位置を2行目からとかでややこしくしようとする人がいるんだけど、
ソースにしろ、コードにしろ、シンプルイズビューティフル
なんで、
ただ、1行目をスキップすればいいのであれば、スキップさせればいい
だけの話。
逆に、
M_Kaku堂練習帳.Sheet(処理年月シート名).Cell("B" & CurrentIndex)
//ブック名.シート名.セルの値(B列の現在の行)
をif文を使わずに
M_Kaku堂練習帳.Sheet(処理年月シート名).Cell("B" & CurrentIndex + 1)
//ブック名.シート名.セルの値(B列の現在の行)
なんかで試しにやってみ( ´∀` )
☞最終行までしか繰り返さなくていいはずなのに、
行数+1回分まで読み込む=最終行の次の行が空欄なのに、
その値でWEBにアクセスしたらどーなるだろうね( ´∀` )
☞空のURLを開きに行くから確実にエラーになるんだよね( ´∀` )
実際に動かしながら作らない=机上デバッグで頭でしかコードを書かない連中がよくやること( ´∀` )
さてと、本題に戻って~~~
![](https://assets.st-note.com/img/1721473472198-PC41FoPjnA.png?width=1200)
実行してみると、、、
![](https://assets.st-note.com/img/1721473645720-dgTz2LxQKF.png?width=1200)
![](https://assets.st-note.com/img/1721473671897-ZzgXfjIzIH.png?width=1200)
![](https://assets.st-note.com/img/1721473731743-Tp44npVptZ.png?width=1200)
処理を止めずに何行目を実行したかを知りたいので、
![](https://assets.st-note.com/img/1721473887047-ZKoj7cw30a.png?width=1200)
後は、これまでにやった表抽出
なんかの要領で、
![](https://assets.st-note.com/img/1721479826809-Xc2ORjE2Qq.png?width=1200)
![](https://assets.st-note.com/img/1721479867334-cvcW9S1mXc.png?width=1200)
![](https://assets.st-note.com/img/1721479899732-XYwsSrHq0m.png?width=1200)
さらに~~~
![](https://assets.st-note.com/img/1721474253817-6rSM2eVpzA.png?width=1200)
![](https://assets.st-note.com/img/1721474308412-SaFZUxEzS5.png?width=1200)
実行してみると、、、(出来るかドキドキ👀💦)
最終行がどんどん更新されて、果てしなく無限ループになりそうな予感
って実行結果になったので~~~(確かに冒頭の345行は抜けすぎ( ´∀` ))
繰り返しの上限は、第1段階の最大行数分繰り返したら、繰り返しを終了するように、
![](https://assets.st-note.com/img/1721483540638-vZGry75l0r.png?width=1200)
さらに、
![](https://assets.st-note.com/img/1721483913580-YWyxGD4jeQ.png?width=1200)
![](https://assets.st-note.com/img/1721484014697-e9B7XUzKjl.png?width=1200)
![](https://assets.st-note.com/img/1721484242763-ZYURInaEGv.png?width=1200)
Thenに入れる
![](https://assets.st-note.com/img/1721484322708-Vo3jKML5yR.png)
コイツを
![](https://assets.st-note.com/img/1721484371888-rmXlrsNKER.png?width=1200)
で、再度実行してみると、、、
![](https://assets.st-note.com/img/1721485308259-Hyjv1IW0kD.png?width=1200)
きちんとデータが抜けてる様子( ´∀` )
ま、実は、Studioだと
ブレークポイント
ローカルでデータ検証
Whileアクティビティ
COMPLETE
などがあるので、ここまでややこしい操作にはならないんだけど、オイラが知らないから、ここまでやり込むしかなかったねえ( ´∀` )
裏を返せば、
StudioX側を知らないながらも、ここまでは、
結構簡単に作り込めるってこと( ´∀` )
てか、
まででも書いてるとおり、
StudioXは中途半端な上に、やりくりが面倒くさい
ので、
Studioで普段やり慣れてるに人間からしたら、本当にメリットを感じない。
☞制約が強すぎる
=初心者向けだの市民開発だのゆーてるみたいだけど、
結局、もはやStudioと変わらない感じになってきてるので、
なんでこんな中途半端なものを初心者向けとか開発しやすいとかゆーて
初めてやる人に勧めてるのか意味不明( ´∀` )
ここでポイント③:セルの値を読み込みの「書式付きテキストを取得」に✓が初期値で入ってんだけど、
![](https://assets.st-note.com/img/1721485692460-3VgurLx81J.png?width=1200)
![](https://assets.st-note.com/img/1721485773531-oOIDJRD9Sa.png?width=1200)
以上。
動かしたことがない素人さんへ:表抽出機能全般の最大の欠点
表抽出機能は、実は
実行するタイミングによって要素が全く取れない
ってことがよくあるので、そんなときはあんまり深く考えずに、
素直に、要素を取り直した方が早い( ´∀` )
UiPathが知ってか知らずかは知らないけど、
オイラがUiPathで業務を始めた頃から頻繁に起こってるバグなので、
ま、なぜか理由は知らないし、UiPath自体が気づいて放置してるのかも知らないけどね~~~~
成熟してない開発環境なんで、機能があるからって常に完璧に動く
なんて勝手に妄信しないこと( ´∀` )
現場でもこの前は取れていたのに、実行しなおしたら全く抽出が機能しない
☞表抽出で取り直したらなぜかうまく行った。それ以外何もしてないのに、、、👀💦
なんてしょっちゅうあったからね( ´∀` )
対策としては、
セレクターのidxみたいな可変部分に
変数噛ませて、
UIExplorerなんかで編集して、
要素を取得を繰り返す
みたいな感じで表抽出機能使わずにやったりしてたけど、そこまで複雑なことをやるなら結局、もはや
StudioXではなく、Studioでやれや( ´∀` )
なんで( ´∀` )ま、それも踏まえて、
シートをクリアせずに、
取得出来た情報を
同じシートに最終行に追記して
重複行も削除させて、
情報を蓄積させてくようにしてんだけどね笑😆今しがた実行しなおしたら
![](https://assets.st-note.com/img/1721493704847-wb7DKb2nO2.png?width=1200)
動作が安定しないからなあ( ´∀` )
☞ロボットとして致命的な欠陥でしょ( ´∀` )
と思って作ったんだけど、
シートクリアを頭に入れておかないと、第2段階の繰り返し回数の上限が蓄積された行数になっちゃうので、やっぱり入れておいて、履歴として蓄積せずに、毎回ゼロから取りに行かせた方がいいことを発見( ´∀` )
てか別シートかブックかなんかに履歴として転記させておいた方がいいね( ´∀` )
機会があればこの転記機能もロボットに絡ませよう( ´∀` )
リファクタリング後
![](https://assets.st-note.com/img/1721495214106-DxMWUHcRLj.png?width=1200)
さてと、次回からは
YouTubeでも、ここまでは出来ることは示せたけど、さすがに情報をここまで抜いたら、後は
気になるものを自分でアクセスして学習すればいいし、
動画自体をどうこうする機能はロボットにはないので~~~
クリックして再生させる程度
☞手動で見たいときにやれや( ´∀` )
程度なので、
UiPathの機能に向かないYouTubeでの操作はここまで( ´∀` )
☞てか、いい加減飽きてきた💦
表抽出は構造が複雑なYouTubeみたいな
WEBサイトにはマジで向かない。
なので、次回からは、
オイラがよく確認してる
Yahoo!経済ニュース
を使った遊びを楽しもう💃
ま、普段がTVすらほぼ見ないアナログ人間なので、
YouTube
Yahoo
note
メルカリ
くらいしかデジタルは使わないもので( ´∀` )
ネットとかスマホとにらめっこするよりも、
新聞や文藝春秋、本なんかの活字を読んでる方がよっぽど楽しい( ´∀` )
んだばまた~~~
この記事が気に入ったらサポートをしてみませんか?