Google SpreadSheetのデータをBigQueryに自動同期し、Googleデータポータル(旧Data Studio)で可視化する

## 概要
普段業務のなかでGoogle Spreadsheets（スプレッドシート）を利用して複数人でデータを管理している企業も多いかと思います。しかし絶えず集められるデータをその都度分析し、最新の状態に保つのにはコストがかかります。そこで今回は、[trocco](https://trocco.io/lp/index.html)という分析基盤向けデータ統合サービスを使い、Google Spreadsheetsデータの抽出自動化＋DWHへの統合＋可視化までやってみようと思います。

今回、データの転送手段として採用した[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=spreadsheets_to_bigquery)は、Google Spreadsheetsの他にも、様々な広告・CRM・DBなどのデータソースにも対応しています。
[troccoの使い方まとめ（CRM・広告・データベース他）](https://qiita.com/hiro_koba_jp/items/2b2caa040804e402bda7)
![Troccoアイコン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/ed8aaded-2ab8-b3ff-8a58-163fc854c633.png)



## ゴール
↓画像のようなデータから
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/ca0265a9-b289-0cbc-afe5-3d30abf652e5.png)



↓画像のようなグラフをを30分くらいで作り上げます（作成後は自動で最新値に更新することも可能です）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/c2cd19cc-c196-943e-77ac-2f3a9789ec89.png)




## こんな人におすすめ
・スプレッドシートに集まるデータをいちいち転送するのが面倒に感じる
・Googleフォームを利用したアンケートの結果などを自動的に分析できるようにしたい
・スプレッドシートをデータ元として利用したい

## 1. DWHと同期する手段の選定
### 1-1. DWHの選定
まずはデータを集約する場所である、DWH（データウェアハウス）を選定します。

* Amazon Redshift
* Google BigQuery
* MySQLやPostgreSQL

今回はGoogle BigQueryを利用することにします。

### 1-2. Google SpreadsheetのデータをGoogle BigQueryに転送する４つの方法
Google BigQueryにデータを集約することが決まったので、続いては転送するための手段を検討します。

1. CSV形式でエクスポートしたGoogle Spreadsheetsのデータを直接Google BigQueryに貼り付ける
1. 外部データソースとしてGoogle SpreadsheetsのシートのURLを指定する。
1. BigQuery データコネクタであるコネクテッド シートを使用する（ただしGsuiteのプランがEnterprise以上である必要がある）
1.  [trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=spreadsheets_to_bigquery)を利用し、画面上の設定のみで転送する。

１は単発の分析でしたら可能ですが、集めたデータをその都度更新し続けるのは手間がかかります。２の方法ではGoogle BigQueryを操作するGoogleアカウントがデータ元となるスプレッドシートに対して閲覧以上の権限を有する必要があります。３の方法ではGsuiteのプランが障壁となります。
今回は自動での更新が可能で、一度Googleアカウントとの連携を行えば設定を保存して異なる分析にも使い回せる４の[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=spreadsheets_to_bigquery)を利用してみたいと思います。

## 2. troccoでGoogle Spreadsheets→Google BigQueryの転送自動化
### 2-0. 事前準備
データの転送のためには[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=spreadsheets_to_bigquery)のアカウントが必要です。
フリープランがあり、アカウントは即日発行されますので、申し込みしておいてください！
[https://trocco.io/lp/inquiry_free.html](https://trocco.io/lp/inquiry_free.html?utm_medium=social&utm_source=qiita&utm_campaign=spreadsheets_to_bigquery)

Googleアカウントに関しては、今回転送元となるGoogle Spreadsheetsのシートを所有するアカウントと、転送先となるGoogle BigQueryのアカウントが異なっても構いません。ただしGoogle BigQueryとGoogleデータポータルは同じアカウントで運用したほうが接続が簡単だと思います。

### 2-1. 転送元・転送先を決定
[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=spreadsheets_to_bigquery)にアクセスして、ダッシュボードから「転送設定を作成」のボタンを押します。
<img width="1792" alt="qiita_20200827_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/098f74e5-a834-6b9f-0ea2-2b9c592a6169.png">



転送元に「Google Spreadsheets」を指定し、転送先に「Google BigQuery」を選択して転送設定作成ボタンを押します。
![設定画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/a5d298a0-4931-7323-21ad-8cc44bf61ac8.png)


すると、設定画面になるので、必要な情報を入力していきます。
### 2-2. Google Spreadsheetsとの連携設定
あとで見たときに自分で分かるように転送設定の名前とメモを入力します。
![2-1設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/2b678d35-ff5d-beea-20b1-3d1f8daf7f0e.png)

次に「転送元の設定」内の「接続情報を追加」ボタンを押します。
![スプシ接続設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/c8f43a84-ffbe-624b-077f-dfd8bfb2c72b.png)


別のタブで接続情報の新規作成画面が開きます。Googleアカウントとの連携が可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/97c0a2a8-fdee-d61b-72d2-6001e55d0923.png)

![接続設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/fe716bac-3d09-7160-86ee-54c83a0460f3.png)




再度転送設定画面に戻り、接続情報の「再読込」ボタンを押すと、先ほど作成した接続情報が選択できるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/0efe9d9e-cf60-9d53-b0f3-db67f8afbb6f.png)

### 2-3. Google Spreadsheetsからのデータ抽出設定
次に、どのようなデータを取得するかを設定していきます。
今回は以下のようなシートから閲覧数（view）に関するデータを取得してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/17b84889-dc90-fd8f-6cba-7720ffa12a05.png)

必要なデータを入力していきます。
一番下のカラム設定のデータ型はstring, long, timestamp, boolean, doubleなどから選択が可能です。
![転送元設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/4f331187-e874-f167-95ef-b414b1e0168e.png)




### 2-4. 転送先Google BigQueryの設定
転送元と同様に設定していきます。Google BigQueryに関してもGoogleアカウントとの連携が可能です。（事前に転送先となるデータセットとテーブルを作成しておいてください。）
![Big Query接続設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/819b6921-5b19-a035-206f-50fc05046e09.png)

転送先とするデータセット名、テーブルを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/24bc83c4-2348-aeb4-cb1e-8ded87a6da48.png)


これで入力は完了です。「保存して自動データ設定・プレビューへ」をクリックし、確認作業に進みましょう。

### 2-5. データのプレビュー
少し待つと、転送元のデータがプレビューされます。ここではGoogle SpreadSheetsから取り込んだデータが表示されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/20a6eaab-0b8e-92d8-46f8-4324a3ed3450.png)



転送したいデータが取れているので、設定を完了します。
転送設定の一覧から作成した設定を選び「スケジュール・通知設定」に進みます。

### 2-6. スケジュール・通知設定
「スケジュール・トリガー設定」タブを開きます。
![設定内容.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/7153bb8b-4731-0dc7-3e7a-3de086e76077.png)

「スケジュールを追加」ボタンを押すと、以下の画像のような入力欄が出てきます。ここで実行スケジュールを設定することで、転送を定期的に実行し自動化することが出来ます。
![新規スケジュール登録.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/c770dfae-908a-82c2-03be-99c5e4aefc97.png)


### 2-7. データ転送ジョブの実行
設定は以上です。最後に、手動で転送ジョブを実行し、Google BigQueryにデータを送ります。
手動で実行する場合はジョブ詳細画面の「実行」ボタンを押します。
![設定確認.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/b413528e-7ba1-a7d1-6ee8-e04f40c56e08.png)

これで転送は完了です！

## 3. Google BigQueryの設定
特に設定することはありません。設定で選択したテーブルにデータが転送されているので、今すぐに分析・可視化を行うことが出来ます。
データがきちんと送られているかをプレビューで確認してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/5ec9fd57-705a-810c-c85e-298018f3ec1b.png)


転送されていることが確認できました！
## 4. Googleデータポータルで可視化
それでは、これらのデータをGoogleデータポータルで可視化していきます。  
まずはGoogle BigQueryとGoogleデータポータルの接続設定を行います。
Googleデータポータルを開いて、新規のレポートを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/7523cb1b-5296-ece6-fd29-4a0b915044c8.png)
「データを追加」のボタンを押し、データ元の選択肢からGoogle BigQueryを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/d64cc3a7-74ca-44d9-abe6-f2df4410b4c3.png)


転送に使用したプロジェクト、データセット、表（テーブル）を選択し、追加します。
![データポータル接続設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/f2369738-ea33-03ec-4b68-6d64e38aabc1.png)


データベースに接続できたら、右側の設定を変更し、必要な情報を表示させます。
後で作成する棒グラフにおいて、「ディメンション」が横軸、「指標」が縦軸に対応します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/183f8283-68fa-7f23-ae45-127a330969a8.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/051e8566-0cde-8e2f-19a4-6910d8d2c933.png)



最後に右上のグラフ一覧から目的に合ったグラフの形を選択します。
今回は閲覧数の比較をするため、棒グラフを選択します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1071783/0d7204f0-06d7-a9a5-ed1b-d74887f47683.png)






## まとめ
いかがでしたでしょうか。[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=spreadsheets_to_bigquery)を使うと、複数人で編集したり絶えず更新されるGoogle Spreadsheetsのデータでも自動でGoogle BigQueryにまとめていくことができるほか、100万規模の大きなデータからそうではない小さなデータまで複雑なコーディングをせず[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=spreadsheets_to_bigquery)の画面上の設定のみでデータの転送が可能になります。
実際に弊社サービスの[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=spreadsheets_to_bigquery)においても、マーケティングKPI等をこのような流れで収集・分析しています。
ぜひ広告データ分析の際にはご活用ください。
[https://trocco.io/lp/index.html](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=spreadsheets_to_bigquery)

実際に試してみたい場合は、[フリープラン](https://trocco.io/lp/inquiry_free.html?utm_medium=social&utm_source=qiita&utm_campaign=spreadsheets_to_bigquery)がありますので、この機会にぜひ一度お試しください。
その他にも広告やデータベースなど、様々な分析データをETL・転送した事例をまとめました。
[troccoの使い方まとめ（CRM・広告・データベース他）](https://qiita.com/hiro_koba_jp/items/2b2caa040804e402bda7)