我尝试使用Apps Script的UrlFetchApp从我的Mixpanel项目中获取数据。它涉及在HTTP POST请求的主体内发送JQL脚本。这是JQL脚本:
var jqlScript = 'function main() { return Events(params).filter(function(event){return event.name == \"purchase\";}).reduce(mixpanel.reducer.count());}';
var params = '{\"from_date\":\"' + getDateString(aWeekAgo) + '\",\"to_date\":\"' + getDateString(yesterday) + '\"}';
var payload = {
script: jqlScript,
params: params
};
var options = {
'method': 'post',
'headers': {
'Authorization' : 'Basic #############' // my API secret
},
'payload': payload
};
var data = UrlFetchApp.fetch('https://mixpanel.com/api/2.0/jql/', options);
但我在执行记录中不断收到此错误:
“https://mixpanel.com/api/2.0/jql/请求失败返回代码400.截断的服务器响应:{”request“:”/ api / 2.0 / jq /“,”error“:”验证脚本时出错:未捕获异常SyntaxError:意外结束input \ nfunction main(){return E ...(使用muteHttpExceptions选项检查完整响应)(第22行,文件“Code”)“
我仔细检查了脚本并确保没有遗漏'}'或类似的东西,正如本网站上的其他问题所暗示的那样。我被困在这里了!
答案 0 :(得分:2)
我认为App Script逃脱有问题,因为我不知道为什么会这样,但我找到了一个功能性解决方案:
如果从jql / javascript字符串中删除所有分号,它将起作用。
var jqlScript = 'function main() { return Events(params).filter(function(event){return event.name == "purchase\"}).reduce(mixpanel.reducer.count())}';