ChangeLog - noissefnoc

日々のChangeLog。趣味のコードとかの話

Google Data Portal (旧Data Studio) で Community Connector を作成してデータを直接取得する - 事前知識編

はじめに

GoogleダッシュボードプロダクトにGoogle Data Portal (旧Data Studio)があります。

会社でG Suite使っているため

  • 権限設定
    • 広くてもG Suiteの同一組織配下。まとめて設定したいなら組織やプロジェクトの単位でGroupを払い出す
  • 簡易バッチ
  • 社内データ利用
    • 人が作るデータなら相当の経年を経ない限りはSpreadsheetで収まるので、Spreadsheetで
    • (適切な用途ではないものの)無償である程度のレコードを扱いたければFusion Tablesがあったが今年末でディスコン
    • (それ以上でGCPになるとIAMの権限管理が入るし、予算の話も出るし、セキュリティの話もあってちょっとハードル上がる)

というお手軽さがあり

  1. Google Apps Script の時間トリガーで以下を処理
    • データの収集
    • データの加工・整形
    • Spreadsheetへの出力
  2. Google Data Portal の取得〜可視化〜配信
    • Spreadsheetをデータソースにして適当な間隔でデータを更新するように設定
    • ダッシュボードごとの権限設定
    • ダッシュボードに表示する図表を作成
    • (必要に応じて) 定期的にメールによるダッシュボード配信

といったパイプラインで処理していました。

ここで一考の余地があるのが「1. Google Apps Script の時間トリガーで以下を処理」の箇所。「2. Google Data Portal の取得〜可視化〜配信」の取得部分(上記の例だとSpreadsheetに接続・取得している)で対応できないか、という要望に応えるのが Community Connector

developers.google.com

の機能になります。一旦Community Connector を作成すると「2. Google Data Portal の取得〜可視化〜配信」の側だけで設定が完了するので

  • 「1. Google Apps Script の時間トリガーで以下を処理」が不要になるため、より簡易に利用できる
  • 認証情報や取得設定などを Community Connector 側で設定できるため、管理がData Portalで完結する

といったメリットがあります。

Community Connector について

Community Connector は Apps Script で指定のインターフェースの関数とマニュフェストを記載することで実装できます。

  • 指定インターフェース
    • getConfig() : ユーザに入力してもらうコネクタの設定のUIと変数へのマッピングを定義。例) 認証情報など
    • getSchema() : 取得データの Data Portal 上でのスキーマを定義。 例) 1カラム目は「ID」という名称のディメンションで文字列型
    • getData() : データの取得と、Data Portal 定義のデータのオブジェクト形式に設定
    • getAuthType() : 認証の種類をセット。現段階(2019/06)でサポートされているのは「認証なし」「OAuth 2.0」「APIキー」「ID/Password」「ID/Token」
    • 詳細はコネクタ作成リファレンスを参照
  • マニュフェストファイル

といったところで、各インターフェースの引数や戻り値のオブジェクトはリファレンスの記載を元に作成していきます。

今後、実際に Community Connector を作ってみての感想や気づきを複数回に分けて書いていこうと思います。

次回は指定インターフェースの実装について。

デプロイは Apps Script のマニュフェストを使ったデプロイになります。次々回くらいに書ければと思います。

公開範囲は個人利用からCommunity Connectorのポータルへ公開して一般に使ってもらうまで選べます。パートナーやオープンソース開発のConnectorは高度なコネクタ検索に一覧があります。今回はG Suite組織内での利用を想定しているので、公開に関しては触れません。

最後に開発にあたっての共有、デバッグ、エラー認証他の話で、次々々回くらいに書ければなと思います。

余談

ダッシュボード系のツールではデータを取得する機能を Connector と呼び、類似カテゴリのDOMOでも利用者がJavascriptでConnectorを作成する機能があります。

developer.domo.com

作成と確認のUIやロギング・エラーはDOMOの方が分かりやすいと思いますが、ドキュメントやサンプルのAPIや設定項目の網羅性はData Portalでしょうか。

Connector自身の機能は性質が異なるので比較するのはアンフェアですが、あえて比較書いておきます。

  • Data Portal
    • 言語はApps Script (built-inや実行時間などもこれに依存)
    • 拡張のDataStudioオブジェクトは設定作成部分のサポート。加工処理は自前、認証はライブラリ読み込んで利用
  • DOMO
    • 言語はJavascript
    • 拡張は作成設定部分以外にも取得したレコードのよくやりたい加工処理や認証処理サポートがある

という感じで、あくまで私見ですが、汎用性と既存資産のData Portalと目的特化のDOMOという感じです。