Excelでjsonデータの取得方法(手作りGoogle AnalyticsのExcel連携)
スポンサーリンク
http://blog.goo.ne.jp/xmldtp/e/c7e3c3631d31206f818b30276d0f3091
上記を参考にしたら出来ました。感謝!
Google analyticsでデータを、Excelで取得したかったのですが、プラグインとかいろいろ入れないとだめだったのでnode.js挟む形にしました。
こんな感じ。
これでレポートもらくらく作成。
Node.js側
packageはga-analyticsを使っていますので、前処理として、こちらの"ga-analytics"の箇所を実施します。
app.js
app.get('/ga/get/:path?/:day_start?/:day_end?', routes.get);
index.js
exports.get = function(req, res){ var path = req.params.path; var day_start = req.params.day_start; var day_end = req.params.day_end; console.log(path + " " + day_start + " " + day_end) // "_"を"/"のかわりに使っているので"/"に置換 path = path.replace(/_/g, "/"); var gaAnalytics = require("ga-analytics"); var CLIENT_ID = 'xxxxxxx.apps.googleusercontent.com'; var SERVICE_ACCOUNT_EMAIL = 'xxxxxxxxx@developer.gserviceaccount.com'; var SERVICE_ACCOUNT_KEY_FILE = 'key.pem'; gaAnalytics({ startDate: day_start, endDate: day_end, 'dimensions' : "ga:source,ga:userType,ga:date,ga:PagePath", 'metrics': "ga:sessions,ga:users", 'filter':"ga:pagePath==" + path, 'clientId': CLIENT_ID, 'serviceEmail': SERVICE_ACCOUNT_EMAIL, 'key': SERVICE_ACCOUNT_KEY_FILE, 'ids': "ga:xxxxxxxxxx" }, function(err, data) { if(err){ console.log(err); }else{ console.log(data); res.send(data); } });
google analyticsのパラメータなどはこちらで色々サンプルが見れます。
Excel側
Private Sub CommandButton1_Click() Dim objSC As Object 'Script Control Dim strFunc As String '関数文字列 Dim strJSON As String 'JSONデータ(文字列) Dim objJSON As Object 'JSONファイルをパースしたもの Set objSC = CreateObject("ScriptControl") objSC.Language = "JScript" strFunc = "function jsonParse(s) { return eval('(' + s + ')'); }" objSC.AddCode strFunc On Error Resume Next ReqPath = "http://<node.jsのホスト>:<ポート>/ga/get/_<path>_<path>/<YYYY-MM-DD>/<YYYY-MM-DD>" Set objShell = CreateObject("WScript.Shell") Set objXmlHttp = CreateObject("MSXML2.XmlHttp") objXmlHttp.Open "GET", ReqPath, False objXmlHttp.Send '6行下の部分でrowsだとExcel上でのエディタだと勝手にRowsになってしまうのでdatasに置換 strJSON = Replace(objXmlHttp.ResponseText, "rows", "datas") Set objJSON = objSC.CodeObject.jsonParse(strJSON) recno = 1 For Each rec In objJSON.datas Dim tmp As Variant tmp = Split(rec, ",") cellno = 1 For Each dat In tmp Cells(recno, cellno) = dat cellno = cellno + 1 Next recno = recno + 1 Next Set objXmlHttp = Nothing End Sub
これでデータは取ってこれるので、あとはレポート等をさくさくっと。