Googleデータポータルのコネクタをつくってみる
この記事は、Apps Scrippt Advent Calendar 2019 – Qiita 12/9の記事です。
背景
皆さんは、売上げやユーザー数等、事業のKPIをどのように共有、可視化していますか?
うちの会社では、いままでいろんな所に分散していたデータをGoogleデータポータルを使って、集約&可視化していこうブームがおこっています。
そこで1つ壁になっているのが、データポータルが対応していないデータとどう連携するかということです。
例えば、バグチケットを管理しているMantisHubというバグトラッキングシステムのデータを分析したいと思ったとき、データポータルでは対応していないため、このような方法で連携していました。
この方法では、リアルタイムにデータを取得できない等の問題があり、他にいい方法がないかぁと探して見つけたのが、コミュニティコネクタという仕組みでした。
しかも、使い慣れているGoogleAppsScriptで開発するということなので、早速やってみました!
コミュニティコネクタの作成
今回は、例にあげたMantishubと連携するための、Mantishub Connectorを作ってみようと思います。
公式ドキュメントによるとコミュニティコネクタ作成するには大きく以下のステップになっているようです。
- Google Apps Scriptのプロジェクトを作成する
- コネクタのコードを実装する
- プロジェクトマニフェストを作成する
- デプロイする
CodeLabsでコミュニティコネクタを作成する手順を学習できるので、先にやってみるとイメージ付きやすいと思います。
Google Apps Scriptのプロジェクトを作成する
Google Apps Scriptからプロジェクトを作成します。GASerの方には説明不要ですねw
コネクタのコードを実装する
コネクタに必要な以下の関数について実装します。
実際に実装したコードはGithubで公開しています。
- getAuthType() で認証の種類を定義する
- 今回は、特定の認証情報を使うので、
AuthType : NONE
としています
- 今回は、特定の認証情報を使うので、
- getConfig() で設定を定義する
- getSchema() でフィールドを定義する
- getData() でデータを取得して返す
- MantisHub APIを使って、データを取得します
プロジェクトマニフェストを作成する
スクリプトエディタの 表示 > マニュフェストファイルを表示 をクリックして、マニュフェストファイル 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画面で新しいデプロイを作成します。
さらに、作成したデプロイの データスタジオアイコン をクリックして表示されるリンクをクリックすると、データポータルのウィンドウが開きます
あとは 接続 をクリックすれば、レポートに追加することができます!
やってみて
意外とさくっとコミュニティコネクタを作成することができました!これで、ブームに乗り遅れず、データの集約&可視化を進めていけそうですw
ただ、今回使ったMantishub APIは、期間を指定してデータを取得できなかったり、レスポンスが遅かったりとこのまま使うのは厳しそうでした。。。一難去ってまた一難。。。