使用Apps脚本

时间:2017-01-03 13:28:29

标签: javascript mixpanel jql

我尝试使用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”)“

我仔细检查了脚本并确保没有遗漏'}'或类似的东西,正如本网站上的其他问题所暗示的那样。我被困在这里了!

1 个答案:

答案 0 :(得分:2)

我认为App Script逃脱有问题,因为我不知道为什么会这样,但我找到了一个功能性解决方案:

如果从jql / javascript字符串中删除所有分号,它将起作用。

var jqlScript = 'function main() {  return Events(params).filter(function(event){return event.name == "purchase\"}).reduce(mixpanel.reducer.count())}';