奮闘中

QAエンジニアとして、2児のパパとして、一家を支える大黒柱として、日々奮闘中!

Googleデータポータルのコネクタをつくってみる

この記事は、Apps Scrippt Advent Calendar 2019 – Qiita 12/9の記事です。

qiita.com

背景

皆さんは、売上げやユーザー数等、事業のKPIをどのように共有、可視化していますか?

うちの会社では、いままでいろんな所に分散していたデータをGoogleデータポータルを使って、集約&可視化していこうブームがおこっています。

そこで1つ壁になっているのが、データポータルが対応していないデータとどう連携するかということです。

例えば、バグチケットを管理しているMantisHubというバグトラッキングシステムのデータを分析したいと思ったとき、データポータルでは対応していないため、このような方法で連携していました。

  1. 定期的にMantishubのデータをスプレッドシートに出力
  2. スプレッドシートをデータポータルと連携

この方法では、リアルタイムにデータを取得できない等の問題があり、他にいい方法がないかぁと探して見つけたのが、コミュニティコネクタという仕組みでした。

しかも、使い慣れているGoogleAppsScriptで開発するということなので、早速やってみました!

コミュニティコネクタの作成

今回は、例にあげたMantishubと連携するための、Mantishub Connectorを作ってみようと思います。

公式ドキュメントによるとコミュニティコネクタ作成するには大きく以下のステップになっているようです。

  1. Google Apps Scriptのプロジェクトを作成する
  2. コネクタのコードを実装する
  3. プロジェクトマニフェストを作成する
  4. デプロイする

CodeLabsでコミュニティコネクタを作成する手順を学習できるので、先にやってみるとイメージ付きやすいと思います。

Google Apps Scriptのプロジェクトを作成する

Google Apps Scriptからプロジェクトを作成します。GASerの方には説明不要ですねw

コネクタのコードを実装する

コネクタに必要な以下の関数について実装します。

実際に実装したコードはGithubで公開しています。

  • getAuthType() で認証の種類を定義する
    • 今回は、特定の認証情報を使うので、 AuthType : NONE としています
  • getConfig() で設定を定義する
  • getSchema() でフィールドを定義する
  • getData() でデータを取得して返す

プロジェクトマニフェストを作成する

スクリプトエディタの 表示 > マニュフェストファイルを表示 をクリックして、マニュフェストファイル appsscript.json を作成します。

{
  "timeZone": "Asia/Tokyo",
  "dependencies": {
    "libraries": []
  },
  "exceptionLogging": "STACKDRIVER",
  "dataStudio": {
    "name": "MantisHub Connector",
    "logoUrl": "https://raw.githubusercontent.com/andysumi/datastudio-mantishub-connector/master/logo.png",
    "company": "andysumi",
    "companyUrl": "https://github.com/andysumi",
    "addonUrl": "https://github.com/andysumi/datastudio-mantishub-connector/",
    "supportUrl": "https://github.com/andysumi/datastudio-mantishub-connector/issues",
    "description": "This connector can connect to your MantisHub, and bring the data to the Data Studio.",
    "shortDescription": "This Connector uses MantisHub API to fetch issues.",
    "authType": ["NONE"]
  }
}

マニュフェストファイルの詳細については、リファレンスを参照してください。

デプロイする

スクリプトエディタの 公開 > マニュフェストから配置 を選択して、Deployments画面で新しいデプロイを作成します。

f:id:andysumi:20191208153037p:plain
Deployments画面

さらに、作成したデプロイの データスタジオアイコン をクリックして表示されるリンクをクリックすると、データポータルのウィンドウが開きます

f:id:andysumi:20191208170200p:plain
コネクタ接続画面

あとは 接続 をクリックすれば、レポートに追加することができます!

やってみて

意外とさくっとコミュニティコネクタを作成することができました!これで、ブームに乗り遅れず、データの集約&可視化を進めていけそうですw

ただ、今回使ったMantishub APIは、期間を指定してデータを取得できなかったり、レスポンスが遅かったりとこのまま使うのは厳しそうでした。。。一難去ってまた一難。。。