スマートキャンプでマーケターをしている佐々木です。
最近は自販機でペットボトルを購入することにハマっています。
私は弊社の運営する資料請求サイト「ボクシル」のマッチング最適化を生業として生きているのですが、追うべきKPI・可視化したデータの共有にはスプレッドシートを好んで使っています。
SQLで取り出したデータであればRe:dashで共有するのがライトなのですが、
- SQLでとってきたもの以外のデータを上手く組み合わせられない
- 様々なアレルギー反応を起こす人がいる(英語UIがダメな人、クエリ見ると卒倒しちゃう人etc...)
- 権限管理が大変
などダッシュボードとして利用していくにあたって、特に非エンジニアに浸透しづらいというのがあります。
そこでスプレッドシートをダッシュボードとして活用していく方法を紹介したいと思います。
概要
Re:dashのAPIとスプレッドシートのimportdata関数を利用することでシートに最新のデータを反映できます。
ツールごとの役割分担
・データの抽出→Re:dash ・データの加工・ビジュアライズ→スプレッドシート
使った技術
- データの抽出
- SQL(Google Bigquery)
- クエリの定期実行
- Re:dash
- API
- Re:dash
- APIの定期実行
- Google App Script
流れ
全体
- Re:dashでクエリ作成
- Re:dashのクエリ実行頻度設定
- Re:dashでAPI取得&スプレッドシートで
importdata
関数をかく - シートを開くor更新するたびにAPIを実行し、最新のデータを反映させるためのGASを作成
1. Re:dashでクエリ作成
2. Re:dashのクエリ実行頻度設定
3. Re:dashでAPI取得&スプレッドシートで importdata
関数をかく
↓こんな感じでRe:dashで出力したデータがスプレッドシートに表示されます。
4. シートを開くor更新するたびにAPIを実行し、最新のデータを反映させるためのGASを作成
GAS(Google App Script)とは、スプレッドシートやフォーム、カレンダーなどGoogleのサービスをカスタマイズするための言語でJavaScriptをベースとされています。G suiteを導入している企業であれば、業務改善にも役立ちます。
GASの実装方法
今回書いたGAS
- やりたいこと=常に最新のデータが見れるようにしたい
- 要件
- シートを開くたびにRe:dashのAPIを実行
- リロードしたらRe:dashのAPIを実行
- 要件
var configs = [ { //ここでシートを指定 "sheetName": "シート1", //importdataを記述したセルを指定 "cell": "A2", //ここに先程importdataで使ったのと同じurlをいれる "url": "http://redash.xxx/api/queries/xxx/results.csv?api_key=~~~~~~~" }, /* 下のような形式で設定をカンマで区切って追加して保存すれば、反映されます(色んなところのカンマは忘れがちなので気をつけてください) , { "sheetName": "", "cell": "", "url": "" } */ ]; // ファイルが開かれた or ブラウザが更新されたときに実行される関数 function onOpen() { // 上で設定したconfigsのそれぞれ(forEach)のconfigを元にsetImportRedash関数を実行する configs.forEach(function(config){ setImportRedash(config.sheetName, config.cell, config.url); }); } // 「シート名、セル番号、redashのURL」 を受け取ってセル(redashから取ってくるデータ)を更新する関数 function setImportRedash(sheetName, cell, url) { var timestamp = Utilities.formatDate(new Date(), "JST", "yyyyMMddHHmmss") var formula = Utilities.formatString('=IMPORTDATA("%s&seed=%s")', url, timestamp) SpreadsheetApp .getActiveSpreadsheet() .getSheetByName(sheetName) .getRange(cell) .setValue(formula); }
補足
こんな感じで表示されているデータをもとにピボットテーブルを組んだり、
例えばこんな感じの担当営業リストとかを作って
こんな感じで vlookup
関数を使ったりもできます。
まとめ
いかがでしたか?
スプレッドシートの importdata関数
はRe:dash以外でもAPIが用意されているサービスであれば応用がきくので、
「ツールが社内で定着しないよ!」と悩んでいる方は是非試していただければと思います。