Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

Google SheetsのデータをCData Driverを使って、Power BIで表示してみる(OAuth周りの設定を中心に)

こうゆうお仕事をしていると、お客様のデータ管理プラットフォームについて色々とお話することがあるのですが

その中で意外と使われているなぁと感じているのがGoogle Sheetsだったりします。

特にGoogle Appsをメインのメールやスケジュール基盤として使っているところは自ずとGoogle Driveを使うことになり、

KintoneやDynamicsなどのアプリを使うまでも無いものは、Google Sheetsで共有しながらデータ管理って、ままあるんじゃないでしょうか?

そして気がつけばGoogle Sheetsが肥大化して、あちらこちらに情報が存在する。みたいな。

ファイルサーバのExcel状態です、って言えばイメージが湧きますかね?

こうなってしまうとデータを集めてBIツールへ取り込むのも一苦労なんですが、今回はそんなGoogle SheetsのデータをPower BIで直接アクセスして、データの流し込みができるところまでをCData GoogleSheets Driverを使いながらやってみました。

必要なもの

Google アカウント

Power BI デスクトップ

CData Google Drive ODBC Driver(以下からダウンロードできます)

www.cdata.com

Google Cloud Platformで認証情報の設定(Client IDとClient Secretの取得)

さて、それでは実際にやっていきたいんですが、Google Sheetsのデータを取得するために必要な作業の大半はAPIへアクセスするためのOAuth周りの設定です。(そしてこの記事の大半もそこに割いています)

大まかな流れとしては、GCPでプロジェクトを作成し、OAuthの設定をかけて、Client IdとClient Secretを取得、プロジェクトがアクセスできるGoogleのアプリの設定をかける、という感じです。

ではやっていきましょう。

以下のURLにアクセスして、対象のGoogle アカウントでログインします。

console.cloud.google.com

f:id:sugimomoto:20171230161853p:plain

画面上に表示されているプロジェクト名を選択し、(はじめての方はちょっと違うかもです)、

f:id:sugimomoto:20171230162017p:plain

[+]ボタンをクリックして新しくプロジェクトを追加します。

f:id:sugimomoto:20171230162023p:plain

適当なプロジェクト名を入力して[作成]をクリック

f:id:sugimomoto:20171230162031p:plain

プロジェクトの作成が開始されます。そんなに時間はかからないです。

f:id:sugimomoto:20171230162037p:plain

これでプロジェクトの作成は完了です。

認証情報の設定

プロジェクト作成完了後、認証情報を設定します。

プロジェクトの管理画面から[API認証情報]をクリックし

f:id:sugimomoto:20171230162058p:plain

[認証情報を作成]→[OAuth クライアントID]をクリック

f:id:sugimomoto:20171230162104p:plain

はじめOAuthの認証処理時に表示される同意画面を設定する必要があるので[同意画面を設定]のボタンをクリックします。

f:id:sugimomoto:20171230162113p:plain

同意画面にはサービス名を入力するだけで大丈夫です。

他は必要に応じて、設定してあげてください。(BIツールでデータアクセスするだけであれば特に不要だと思いますが。)

f:id:sugimomoto:20171230162118p:plain

その後、元のクライアントIDの作成画面に戻るのでアプリケーションの種類から[その他]を選択して[作成]をクリックします。

f:id:sugimomoto:20171230162131p:plain

[作成]クリック後以下のようにOAuthの[クライアントID]と[クライアントシークレット]が表示されます。

あとでODBCからアクセスする際に必要となるので、忘れないように控えておきましょう。

f:id:sugimomoto:20171230162135p:plain

Google DriveGoogle sheetsへのアクセス権設定

続いて、この認証情報を用いてアクセスすることができるGoogle のアプリケーションを選択します。

APIs & Servicesの画面から[ライブラリ]を選択し

f:id:sugimomoto:20171230162150p:plain

いろんなGoogle のライブラリの中から[Google Drive API]と[Google Sheets API]へのアクセス許可を設定します。

f:id:sugimomoto:20171230162155p:plain

それぞれを開いて[有効にする]をクリックしてください。

f:id:sugimomoto:20171230162201p:plain

f:id:sugimomoto:20171230162206p:plain

最終的にダッシュボードの有効化されたサービスにGoogle DriveGoogle Sheetsが追加されていればOKです。

(↓の画面はすでにアクセスした後のキャプチャなので、ちょっとグラフが出てきちゃってます。)

f:id:sugimomoto:20171230162214p:plain

これで、Google 側の設定は完了です!

CData Google Sheets ODBC Driverの設定

続いてODBC DSNでGoogle Sheetsとの接続の設定をします。

あらかじめ以下のURLからCData Google Sheets ODBC Driverをダウンロードしておきます。(30日間試用版があります)

Google Sheets Drivers - ダウンロード

インストール後、DSN構成画面が立ち上がるので、先程取得したクライアントIDとクライアントシークレットを設定して、接続テストをクリックします。

f:id:sugimomoto:20171230162236p:plain

すると、以下のようにOAuthでの認証画面が出てくるので対象となるアカウントを選択して

f:id:sugimomoto:20171230162242p:plain

スコープのリクエストを確認の上、[許可]をクリックします。

f:id:sugimomoto:20171230162247p:plain

以下のようにGoogle Authorization Successfulが表示されればOKです。

f:id:sugimomoto:20171230162251p:plain

Power BIで読み込み

最後にPower BIでデータの読み込みです。

Power BIデスクトップを立ち上げて[Get data]をクリック

f:id:sugimomoto:20171230162257p:plain

対象のデータソース一覧から[ODBC]を選択します。

f:id:sugimomoto:20171230162307p:plain

先程DSN登録した[CData GoogleSheets Source]を選択し、[OK]をクリック

f:id:sugimomoto:20171230162312p:plain

クレデンシャルは[Windows]を選択し[Use my current credentials]が選択されていることを確認の上[Connect]をクリックすればOKです。

f:id:sugimomoto:20171230162331p:plain

以下のようにGoogleSheetsのデータが表示されます。

Googlesheetsのデータは[ファイル名_シート名]という形式で表現されます。

以下は[Nortwind]というファイルに[Categories]というシートにアクセスしています。

f:id:sugimomoto:20171230162336p:plain

元データはこんな感じですね。

f:id:sugimomoto:20171230162340p:plain

あとはそれぞれのデータをロードしてPowerBIで加工してあげればOKです。

とりあえず接続するところまででしたが、あとはそれぞれのデータに合わせて、調整してもらえれば。