使用 Apps 脚本通过 HTTP API 执行 Mixpanel 的 JQL 脚本时出现输入错误结束
End of input error when executing Mixpanel's JQL script with HTTP API using Apps Script
我尝试使用 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);
但我在执行记录中不断收到此错误:
"Request failed for https://mixpanel.com/api/2.0/jql/ returned code 400. Truncated server response: {"请求": "/api/2.0/jql/", "error": "Error validating script: Uncaught exception SyntaxError: Unexpected end of input\nfunction main() { return E... (use muteHttpExceptions option to examine full response) (line 22, file "代码")"
我仔细检查了脚本并确保没有遗漏“}”或类似内容,正如本网站上其他问题所建议的那样。我被困在这里了!
我假设 App Script 的转义有问题,因为我不知道为什么会这样,但我找到了一个实用的解决方案:
如果您从 jql/javascript 字符串中删除 所有 分号,它将起作用。
var jqlScript = 'function main() { return Events(params).filter(function(event){return event.name == "purchase\"}).reduce(mixpanel.reducer.count())}';
我尝试使用 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);
但我在执行记录中不断收到此错误:
"Request failed for https://mixpanel.com/api/2.0/jql/ returned code 400. Truncated server response: {"请求": "/api/2.0/jql/", "error": "Error validating script: Uncaught exception SyntaxError: Unexpected end of input\nfunction main() { return E... (use muteHttpExceptions option to examine full response) (line 22, file "代码")"
我仔细检查了脚本并确保没有遗漏“}”或类似内容,正如本网站上其他问题所建议的那样。我被困在这里了!
我假设 App Script 的转义有问题,因为我不知道为什么会这样,但我找到了一个实用的解决方案:
如果您从 jql/javascript 字符串中删除 所有 分号,它将起作用。
var jqlScript = 'function main() { return Events(params).filter(function(event){return event.name == "purchase\"}).reduce(mixpanel.reducer.count())}';