LoginSignup
0
0

More than 3 years have passed since last update.

MixPanelのデータをGASを使って取得する方法

Posted at

MixPanelはサクサク動くし、分析もかゆいところに手が届くのでとても好きだが
他データソースのものと組み合わせて使おうとして躓いたのでメモ

MixPanelで取得したPVを他のデータソースと横断して分析したい

サービスを取り巻くデータは下記のように色々なものがある

  • アプリケーションのDB
  • SalesForce
  • Firebase
  • その他SendGridなどのSaaSなど

これとかを見る限りだと、基本的には全てBigQueryに突っ込んでそこから見るというのがベストプラクティス化しているように感じている

近年のデータ分析基盤構築における失敗はBigQueryを採用しなかったことに全て起因している

ということでMixPanelの情報もBigQueryに入れようとしたが、どうやら有料のサービスを使わないといけないらしい

Segment とかも注目していたので試してみたが、出力のみで、Mixpanelの情報を取得するということとかはできなさそう、定番のZapierも同じ

どうやらMixPanelは貯まったデータを取得する部分は弱いらしい

結局どうしたか

結局見たいデータがピンポイントだったのでGoogle App Scriptをスケジュール実行して
スプレッドシートに出力。そいつをredashで見に行くようにした

redashをspreadsheetの連携については下記が参考になる
Redash と Google Spreadsheet を連携する


function fetchPV() {  


  var today = new Date();

  var fromDate = Utilities.formatDate(new Date(today.getFullYear(), today.getMonth()-2, 1), 'Asia/Tokyo', 'yyyy-MM-dd')
  var toDate = Utilities.formatDate(new Date(today.getFullYear(), today.getMonth()+1, 0), 'Asia/Tokyo', 'yyyy-MM-dd')
  var data = {
      'params'    : '{"from_date":"' + fromDate + '","to_date": "' + toDate + '"}',
      'script'    : 'function main(){return Events(params).filter(function(event) { return event.name == "PageView" }).groupBy(["properties.orgId"], mixpanel.reducer.count()).sortDesc("value")}'
    }
  Logger.log(data)
    var options = {
      "method": "GET",
      "headers" : {"Authorization" : "Basic " + Utilities.base64Encode(PropertiesService.getScriptProperties().getProperty('access_key'))},
      "payload": JSON.stringify(data)
    };

    var url = "https://mixpanel.com/api/2.0/jql"
    var response = UrlFetchApp.fetch(url, options);  

    if (!response) {
      Logger.log("no response");
      return;
    }
   var json = JSON.parse(response);  
  var spreadsheet = SpreadsheetApp.openById("");
  var sheet = spreadsheet.getSheetByName("");
  sheet.clearContents();
  sheet.getRange(1,1).setValue("org_id");
  sheet.getRange(1,2).setValue("pv_recent_3_month");


  for (var i=0; i<json.length; i++){   
    sheet.getRange(i+2,1).setValue(json[i].key);
    sheet.getRange(i+2,2).setValue(json[i].value);
  }
}

MixPanelは検索条件やデータの見え方とかをGUIで設定したreportという機能があって
それをexpoertとかもできるため、最初はそれを使おうとしたものの
どうやら、JQLをHTTP Requestとして渡すのが一番早そうだということに気づき、このやり方でやってみた

同じようなことをやろうとしている方の参考になれば

類似サービスのGoogle AnalyticsだとMixPanelに比べて分析機能は弱いと感じる一方、他サービスとの連携については圧倒的。
割り切って2箇所に飛ばして、MixPanelでの分析、外部サービスとかとの連携はGoogle Analytics使うとかも一案だと思った

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0