Webスクレイピング→スプレッドシート書き出しを自動化[為替レート自動取得]

クラウド型のRPAサービスを使用して「Webスクレイピングを行い、結果をスプレッドシートに出力する」仕組みを構築する一連の流れを紹介します

## この記事で紹介している内容
クラウド型のRPAである『クラウドBOT』を使用して、以下のようなロボットを作成する手順を紹介しています。
【ロボットの処理】
1.為替レートを表示するWebページにアクセスし、為替レートをコピーします。
2.コピーした情報をGoogleスプレッドシートに追記します。
※これを1日1回自動実行します。
![main_image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/1f274ff9-16b7-563f-2d4a-f0192a1a7cc7.png)


## クラウドBOTとは
ブラウザ操作を自動化できる、クラウド型のRPAサービスです。
ユーザがブラウザで行っているクリックやコピーなどの操作を記録し、クラウド上で自動実行できます。
基本無料で利用でき、環境構築が不要で初期費用も発生しません。
(ISO27017を取得しており、セキュリティ面も安心です。)

https://www.c-bot.pro/

## 事前準備
### Googleスプレッドシートの用意
日別に為替レートを記録していけるように、以下のようなシートを用意しました。
![1_事前準備_Googleスプレッドシート.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/ac651f29-d623-5c78-af94-e8f7e70444d7.png)

### サービスアカウントの発行と認証ファイルの取得
クラウドBOTからGoogleサービスを操作する際は、Google Cloudのサービスアカウントを使用します。

![2_事前準備_サービスアカウントの発行.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/60cac019-c3f2-9851-6630-7c7f3fb93849.png)
公式のドキュメントで、
- [x] **サービスアカウトの発行手順と必要な設定**
- [x] **認証ファイルの取得方法**
- [x] **サービスアカウントに特定のフォルダを共有する方法**
について詳しく解説されていますので、こちらを参考に設定します。
https://docs.c-bot.pro/user_guide/bot/b-bot_editer/extension/google_cloud_settings/
※動画でも詳しく解説しています。(https://youtu.be/D4IuGvI47wg)

## ロボットの制作手順
クラウドBOTを使用して実際にロボットを作成していきます。

### BOTエディタ画面を開く ###
クラウドBOTにログインし、ダッシュボード画面の「**BOTを作る**」ボタンをクリックします。
![1_BOTを作るボタンをクリック.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/8fd49393-2e8e-5484-a565-6a601b243b5c.png)

BOTエディタ画面が開きます。「**仮想ブラウザを起動する**」ボタンをクリックし、仮想ブラウザを起動します。
![2_BOTエディタ画面が開く.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/31c1e001-6c1c-19d9-f35b-f77ffbde4725.png)

### 仮想ブラウザでWebページにアクセスする ###
“検索またはURLを入力して下さい”の**部分にスクレイピング対象(為替レートを取得するWebページ)のURL**を入力し、虫眼鏡ボタンをクリックします。
![3_仮想ブラウザにURLを入力.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/e3586554-b34c-f2ad-73c6-8befb223045e.png)

仮想ブラウザに対象のWebページが表示されます。
![4_仮想ブラウザでWebページを表示.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/a41abfb8-baf1-8523-4efb-cb747c1a5a57.png)

### 操作記録を開始する ###
画面左上の三本線ボタンからサイドメニューを開き、「**ブラウザ操作を記録する**」ボタンをクリックします。
![5_操作記録を開始する.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/204ae54f-9fce-4a2b-8998-bb235b31fe1c.png)

1番のタスクに、URLにアクセスするタスクが記録されます。
![6_操作記録をが開始される.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/b9a40014-7ce4-ca39-06ef-c67072c0b978.png)

### 為替レートをコピーする操作を記録する ###

:::note info
クラウドBOTはWebページの要素を対象に、様々な操作を記録できます。
:::

取得する値をクリックしてメニューを表示し、「**コピー**」>「**テキストをコピー**」を選択します。
![7_テキストをコピーする操作を記録する_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/6e5aa0c0-bbdc-8930-e64e-45661ed8d306.png)

データ名を『**外貨→円貨（TTB）**』と入力し、「**コピーする**」ボタンをクリックします。
![8_テキストをコピーする操作を記録する_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/805dcb99-abbf-9a53-7f33-26c8375d721f.png)

テキストをコピーするタスクが追加されます。
![9_コピータスクが追加される.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/dc904169-136f-30a1-8626-b48f092f4be0.png)

同じように『**円貨→外貨（TTS）**』をコピーするタスクを追加します。
![10_TTSをコピーするタスクを追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/72e0b01f-7198-7c16-228d-8857a0cb0a8a.png)

### 今日の日付を作成する ###
スプレッドシートへ書き出す際に使用する“今日の日付”を作成しておきます。
3番のタスクの下に表示されている「**値を作る**」ボタンをクリックします。
![11_値を追加するボタンをクリック.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/bb8f520b-1d1d-9e79-c7a6-2ae84cd894d3.png)

値を作るウインドウが表示されます。


:::note info
『値を作る』は、“生成する値”を組み合わせる事で、BOT内で様々な値を作成できる機能です。
:::

まずは、**＋**ボタンから“**年(4桁)**”を選択します。
![12_年を追加する.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/ef73e347-b547-4d11-1a2d-67cab9b60622.png)

さらに、**＋**ボタンからをクリックし、“**任意の文字列**”を選択します。
“**/**”を入力し。「**OK**」ボタンをクリックします。
![13_任意の文字列を追加する.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/97a66c82-73b6-c475-c0a0-31c808ac17c6.png)

同じように、“**月(0埋め)**”、“**任意の文字列**”、“**日(0埋め)**”を使用して、以下のような値を作成します。

データ名は「**今日の日付**」とし、「**OK**」ボタンをクリックします。
![14_今日の日付を生成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/053c0088-2222-f3e1-2458-ebec44098f5b.png)

今日の日付を作成するタスクが追加されます。
![15_今日の日付を生成するタスクが追加される.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/97f79ee1-19e5-7f64-bcd6-f38a7749698c.png)

### 拡張機能Googleスプレッドシートを呼び出す ###
必要なデータが揃いましたので、Googleスプレッドシートにデータを書き込む操作を記録します。

:::note info
クラウドBOTでは、仮想ブラウザの拡張機能を使用してGoogleスプレッドシートの操作を行いますので、その手順について解説します。
:::

画面右上の3点リーダーから、メニューを開き、「**拡張機能**」をクリックします。
![16_メニューから拡張機能選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/c58ccc10-144f-d2c2-cf52-5ee150ca463d.png)

“**Googleスプレッドシート**”パッケージを選択し、“**データ行追加**”アプリを選択します。
「**使用する**」ボタンをクリックします。
![17_スプレッドシート_データ行追加を呼び出す.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/beaafb44-8096-bde2-a5ca-ded83c5844b4.png)

仮想ブラウザに拡張機能が表示されます。
![18_拡張機能の操作画面が表示される.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/cc2490fd-51f6-dcaa-0e3c-45e17923ba44.png)

### サービスアカウントの認証ファイルを仮想ブラウザにアップロードする ###
拡張機能の操作を記録する前に、事前準備で作成したサービスアカウントの認証ファイルを仮想ブラウザにアップロードします。

画面左下の「**ビューア**」をクリックし、データビューアを開きます。
![19_データビューアを開く.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/642c08db-4060-50f8-8f55-dc03e087dc66.png)

**＋**ボタンをクリックし、新しいデータを追加します。
タイプは“**ファイル**”を選択し、データ名は「**認証ファイル**」とします。
![20_ファイルデータを追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/3dca2139-1aed-17ae-e42e-31bfb21149fb.png)

追加したデータ(認証ファイル)横の**薄いファイルアイコン**をクリックすると、ファイル選択のウインドウが表示されますので、「**ファイル選択**」ボタンをクリックし、**ローカルから事前準備で取得したサービスアカウントの認証ファイルをアップロード**します。
データビューアの「**OK**」ボタンを押して、データビューアを閉じます。
![21_認証ファイルをアップロード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/099863f8-923b-cfb3-14cb-9ed957068836.png)

### サービスアカウントの認証ファイルと、操作対象のスプレッドシートURLを指定する ###
先ほど登録した認証ファイルを参照する操作を記録します。
アップロードフォームの要素を選択し、メニューを開きます。「**データを貼り付け**」>「**認証ファイル**」を選択します。
![22_ファイルを貼り付ける操作を記録.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/b594b72e-87d1-58d9-5904-a7aba14f8d82.png)

続いて、スプレッドシートのURLを入力します。入力フォームの要素を選択し、メニューを開きます。
「**入力する**」を選択します。
![23_URLを入力する操作を記録する.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/aaa5139a-5e72-720b-0801-72f4dff3a7e3.png)

事前準備で作成した**GoogleスプレッドシートのURL**を入力し、青いチェックボタンをクリックします。
![24_URLを入力する操作を記録する_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/fb25f734-441e-c4d7-6a4a-7162eaf3cfd2.png)

「**次へ**」ボタンをクリックする操作を記録します。
![25_次へボタンをクリックする操作を記録する.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/bdb96d22-e7b6-d1c3-6ff1-4d9ec2f1acda.png)

次の入力画面に遷移します。
![26_ステップ2の画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/31ba4bad-8246-7045-6203-7bd6ead44cbf.png)

ここは初期値のままで問題ありませんので、そのまま画面を下にスクロールし、「**次へ**」ボタンを記録する操作を記録します。
![27_ステップ2の画面_次へボタンをクリック.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/e488f0a8-f725-9d69-2fd2-4528c3997148.png)
次の入力画面に遷移します。

### スプレッドシートに出力するデータを入力する ###

スプレッドシートの列名が表示されますので、BOT内で生成した「**今日の日付**」、Webページから取得した「**外貨→円貨（TTB）**」、「**円貨→外貨（TTS）**」をそれぞれ貼り付けます。
![28_データ貼り付け.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/a8d2fae4-45c0-8dac-1154-f0ccb2520ff4.png)

最後に「**更新**」ボタンをクリックする操作を記録します。
![29_更新ボタンをクリック.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/b6c12dc6-16fe-85b8-f998-42f5d7edc4b8.png)

拡張機能の実行結果が表示されます。
“**追加に成功したデータ行数**”が「**1**」になっていればOKです。
![30_拡張機能実行結果画面が表示される.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/2f9cf251-518e-7fc1-17cb-f45ac4b979d4.png)

### スプレッドシートを確認する ###
実際にスプレッドシートを確認してみると、データが出力されています。
![32_スプレッドシートを確認.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/20ad051b-fb68-9c7a-3813-a4731f1d8774.png)

### BOTを保存する ###
BOTエディタ画面に戻り、画面右上の「**保存**」からBOTを保存します。
![31_拡張機能実行結果画面が表示される.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/df095d52-2743-1424-b62f-1aa270e19f62.png)

### BOTのスケジュールを設定する ###
クラウドBOTのダッシュボード画面に戻り、サイドメニューの「**トリガー**」をクリックします。
トリガーを使用すると、スケジュールやメール受信を利用したBOT実行が可能です。
![33_トリガーをクリック.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/ab06a8fc-8df8-8acc-283d-b5f86b530d66.png)

:::note warn
トリガーの利用にはシングルオフィスプラン(3,000円/月)以上の有料プラン契約が必要です。
https://www.c-bot.pro/ja/plan/
:::

今回は1日1回自動実行させたいので、スケジュールを使用してBOTの実行設定を行います。
![34_スケジュール設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/f4a28cfd-27a8-1f5a-5e4d-aaebea9c6e1b.png)
これで、毎日13:00に為替レートを自動スクレイピングし、スプレッドシートに書き出す仕組みが完成しました。

## さいごに ##
クラウド型のRPA『クラウドBOT』を使用して、1日1回「**Webページから為替レートを取得し、スプレッドシートに書き出す**」という自動化を構築してみました。クラウド型のRPAは全てクラウド上で処理されるので、ローカルPCでスクレイピングソフトを動作させるより利便性が高いです。
慣れてくると、このくらいの自動化であれば数十分で構築できるようになります。
本記事のスケジュール設定部分以外は無料で構築できますので、是非チャレンジしてみて下さい！