Вот решение для получения необработанных данных от Mixpanel для заполнения электронной таблицы Google. (Это не совсем вопрос :-))
Получите ваш секретный ключ Mixpanel Api: https://help.mixpanel.com/hc/en-us/articles/115004490503-Project-Token-API-Key-API-Secret
Создайте электронную таблицу Google или откройте существующую.
2.1 Откройте редактор скриптов
[Инструменты] -> [Редактор скриптов]
2.2 Создать функцию, например: exportRawData () {}
2.3. Подготовьте заголовок HTTP следующим образом:
/**
* Call Mixpanel raw export endpoint
**/
exportRawData(){
// Prepare header with the secret key
var API_SECRET = "Replace by your Secret Key";
var headers = {
"Authorization" : "Basic " + Utilities.base64Encode(API_SECRET)
};
var params = {
"method":"GET",
"headers":headers
};
// prepare call args
// WARNING: date are yyyy-mm-dd format
// replace fixed date by dynamic range (now - 7 days or other)
var url = "https://data.mixpanel.com/api/2.0/export/?from_date=2018-11-07&to_date=2018-11-14";
Logger.log('Call Mixpanel:' + url);
var response = UrlFetchApp.fetch(url, params);
var rawData = response.getContentText();
Logger.log('Response length:' + rawData.length);
var items = rawData.split("\n");
// prepare the array that it will be pushed into the google spreadsheet
var structuredData; // the json decoded data
var row;
var outer = []; // array of rows
for ( i in items ){
structuredData = JSON.parse( items[i] );
// In this example, we take Mobile usages only
// with Event, Browser, User
if ( structuredData.properties.$browser.indexOf('Mobile') >= 0 ){
row = new Array(structuredData.event, structuredData.properties.$browser, structuredData.properties.distinct_id);
// push the single row into the array of rowS
outer.push(row);
} //eo fi
} //eo rof
pushInSpreadsheet('Mobile Usage', outer);
} // end of exportRawData
/**
* Push data to the Google Spreadsheet
* sheetName: String
* data: Array of rows
* return: nothing
**/
function pushInSpreadsheet(sheetName, data){
Logger.log("push " + data.length + " item(s) into to sheet " + sheetName);
// Prepare the sheet into the active spread sheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
// select of exist or create new one
var sheet = ss.getSheetByName(sheetName) ||
ss.insertSheet(sheetName, 1);
sheet.clear();
// The expected structure for the horizontal range setting is:
// [ ["cell A1"],["cell B1"],["cell C1"] ]
var range = sheet.getRange(1, 1, data.length, data[0].length );
range.setValues( data );
}
Я надеюсь, что это будет полезно. Любые комментарии приветствуются.