2017-01-03 4 views
2

J'ai essayé d'obtenir des données de mon projet Mixpanel en utilisant UrlFetchApp d'Apps Script. Cela implique l'envoi d'un script JQL dans le corps de la requête HTTP POST. Voici le script JQL:Fin de l'erreur de saisie lors de l'exécution du script JQL de Mixpanel avec l'API HTTP à l'aide du script Apps

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); 

Mais je continue à obtenir cette erreur dans la transcription d'exécution:

"Échec de la demande pour https://mixpanel.com/api/2.0/jql/ renvoyé le code 400. réponse du serveur tronquées: {" demande ":" /api/2.0/jql/"," error ":" Erreur de validation du script: exception non interceptée SyntaxError: fin inattendue de l'entrée \ nfonction main() {return E ... (utilise l'option muteHttpExceptions pour examiner la réponse complète) (ligne 22, fichier "Code" J'ai revérifié le script et je me suis assuré qu'il ne manquait pas de '}' ou des choses comme ça, comme d'autres questions sur ce site ont suggéré. suis coincé ici!

Répondre

2

Je suppose qu'il ya quelque chose de mal avec Escaping App Script, parce que je ne sais pas pourquoi cela fonctionne, mais j'ai trouvé une solution fonctionnelle:

Si vous supprimez tous des points-virgules de votre JQL/javascript chaîne, il marchera.

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