RPAでVTuberのチャンネル登録者数を定点観測してグラフ化してみた

![img_sample.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3985428/90a11bc3-c368-dee8-848f-4227ea7f1ab4.jpeg)

ゲームであったり音楽であったり、自分の好きな人や物がどのくらい人気があるのか、気になりますね。
今回は、自分が「これから上がる」と思ったVTuber5人のチャンネル登録者数を、週に1度自動で取得して、自分のスプレッドシートに書き込んでグラフに反映させる仕組みを構築してみました。
ビジネスシーンなんかにも応用できると思うので、ご興味のある方は是非構築してみてください。

## 構築に使用したツール
- Googleスプレッドシート
- Google Cloud コンソール
- RPA『クラウドBOT』(BOTを作成するだけなら無料、定点観測を実施する際は有料)
- VTuberデータベースサイト(お好きなサイト)

## 構築手順
1. スプレッドシートでグラフのベースを作成する
2. Google Cloudとスプレッドシートの設定をする(クラウドBOTからスプレッドシートにデータを書き込む準備)
3. クラウドBOTで、各VTuberの登録者数を取得してスプレッドシートに書き込むBOTを作る
4. スプレッドシートに正常に書き込まれているか確認する
5. クラウドBOTで、定期的にBOTを実行する設定をする(ここだけ有料)
## 構築してみる
※この項目の後に「作成したBOTのタスク一覧とポイント」も解説しているので、併せて参考にしてください。
### 1. スプレッドシートでグラフのベースを作成する
スプレッドシートを新規作成し、自分の好きなVTuberを1行目に記載します。
2行目に今日の日付と登録者数を入力します。
グラフは値がないと作れないので、最初は自分で登録者数を調べて入力しました。
その情報を元に「挿入」から「グラフ」を選択して、棒グラフを作ります。
![img_sheets.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3985428/bd9f87cb-044d-2fd7-7b67-905d13cbb522.jpeg)
※VTuberの名前は伏せていますが、1行目に記載しています。
※グラフのデータ範囲は予め広く取ります。今回は「A1:F100」にしました。
### 2. Google Cloudとスプレッドシートの設定をする
RPA『クラウドBOT』からスプレッドシートに書き込みをするための準備を、Google Cloudで設定します。
※設定方法は公式ドキュメントに記載されています。
https://docs.c-bot.pro/user_guide/bot/b-bot_editer/extension/google_cloud_settings/
少し面倒ですが、上から下まで設定しないと使えないので、頑張って設定します。
※設定の途中で**JSONファイル**がパソコンにダウンロードされますが、これは後で使うので大切に保管してください。
※設定の最後に「Google Driveのフォルダーを共有する」という項目がありますが、今回は1で作ったスプレッドシートファイルを共有してください。
### 3. BOTを作る
RPA『[クラウドBOT](https://console.c-bot.pro/)』にログインし、BOTを作ります。
作り方を順番に記載します。
- 2でダウンロードしたJSONファイルをデータビューアの「データ」にアップロードする
- データビューアでVTuberの名前のグループデータを作る。
※グループ名は「VTuber」にしました。
![img_groupdata.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3985428/52f0859f-d49d-59b1-1aa3-3e026522259a.jpeg)
- 「値を作る」で日付を生成する。
※「データ名」は「取得日」にしました。
![img_date.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3985428/79bb6709-8c7c-18d9-4076-8a56ccdabcb3.jpeg)
- 仮想ブラウザで、VTuberデータベースサイトにアクセスする。

- 最初に作ったグループデータを「グループを使う」でタスクに入れる。
- VTuberデータベースサイトの検索窓に、「データを貼り付け」からグループデータのVTuberの名前を貼り付けて、検索ボタンをクリックする。
![img_group_temp.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3985428/057cbfdf-2dd2-dec8-493c-f235e9dabcd1.jpeg)
- 検索結果から、チャンネル登録者数に関するテキスト「チャンネル登録者数 00人」をコピーする。
- コピーしたテキストから数値だけを抜き出したいので、拡張機能「AI/ChatGPTに依頼する」で、プロンプトを「数字を抜き出して整数に変更し、数値のみ記載する。」にして変換し、その数値をコピーする。
※拡張機能「AI/ChatGPTに依頼する」は公式ドキュメントに記載されています。
https://docs.c-bot.pro/user_guide/bot/b-bot_editer/extension/ai/request_to_chatgpt/
- 拡張機能「Googleスプレッドシート/データ行追加」を使い、はじめのほうで生成した日付と変換した数値をスプレッドシートに追記する。
※最初にアップロードしたJSONファイルはここで使います。
※拡張機能「Googleスプレッドシート/データ行追加」は公式ドキュメントに記載されています。
https://docs.c-bot.pro/user_guide/bot/b-bot_editer/extension/google_sheets/google_sheets_add_data/
### 4. スプレッドシートを確認する
作成した日の行が追加され、グラフが更新されていればOKです。
![img_comp.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3985428/1666da42-3894-b88b-80f7-07b573866ee2.jpeg)
### 5. クラウドBOTで、定期的にBOTを実行する設定をする
「トリガー」の「スケジュール」で、作ったBOTを週に一度実行させる設定をします。
※設定方法は公式ドキュメントに記載されています。
https://docs.c-bot.pro/user_guide/trriger/schedules/

## 作成したBOTのタスク一覧とポイント
各タスクの横に、どんな事をしているのか記載しているので、参考にしてください。
![img_task.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3985428/70847888-8556-7c56-9727-6fa60be5e381.jpeg)
**※1**：今回参照したデータベースサイトは、アクセスすると最初のページが表示されるまで少し時間がかかります。BOTはその間も次の作業を行おうとするのでタイムアウトエラーとなります。そこで、検索ボタンが表示されるまで待機を入れています。
※要素待機に関しては公式ドキュメントに記載されています。
https://docs.c-bot.pro/user_guide/bot/b-bot_editer/page_control/#outline__13_8
**※2**：上記と同様に、検索結果が表示されるまで少し時間がかかります。ここでは、サイト内の特定の要素が表示されるまで待機を入れています。
※対象要素の指定方法に関しては公式ドキュメントに記載されています。
https://docs.c-bot.pro/user_guide/bot/b-bot_editer/task_operation/#outline__12
**※3**：登録者数のテキストは、広告などで位置がずれると取得できません。このサイトでは登録者数のテキスト部分にユニークなIDが振られていたので、対象要素をそのIDにしました。
**※4**：ここの操作方法は少しややこしいので、下記で別途解説します。

タスク22(拡張機能のStep3)にて、「(empty)」のテキストエリアに①で生成した日付を貼り付けます。
![img_step3-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3985428/e4ccf6f9-9d2a-e384-c2d4-50799175f706.jpeg)

一人目のVTuberのテキストエリアをクリックし、「選択範囲」から「選択範囲を広げる」「選択範囲を戻す」を使い、下図のように青い枠を指定します。指定できたら「グループ範囲を確定する」をクリックします。
![img_step3-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3985428/f9a1626d-c41e-f269-e071-5a1626b6ec6e.jpeg)

「グループを使う」から、グループデータ「VTuber」を選択します。
![img_step3-3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3985428/a616e108-89e7-0aec-7f4d-a4ac288d3cff.jpeg)

タスクにグループが挿入されるので、一人目のVTuberのテキストエリアにChatGPTで変換した整数を貼り付けます。
![img_step3-4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3985428/4e16d080-f6a3-dcc7-087f-c657706f442e.jpeg)


そのまま「グループ処理を完了する」をクリックすると、全ての数値が入力されます。
![img_step3-5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3985428/50c2f8b6-5267-95f3-b036-39df2c564af3.jpeg)

## 最後に
この仕組みを使うと、例えば商品販売数の動向や営業成績なども自動で定点観測し、グラフにできます。
専用のツールではかゆい所に手が届かない、といった場合でも柔軟に作る事ができます。
少しコツはいりますが、ノーコードで簡単に作れますので、是非チャレンジしてみてください。