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これでデータは取ってこれるので、あとはレポート等をさくさくっと。