2016-04-10 3 views
1

Ich versuche, den folgenden JSON zu meiner Liste hinzuzufügen. Ich arbeite daran, dass Leute, die an unsere 501 (c) (3) Wohltätigkeitsorganisation spenden, automatisch eine Quittung für Steuerzwecke per E-Mail erhalten und in unsere "Spender" -Liste aufgenommen werden, damit wir sie in Zukunft über neue Ressourcen und Kampagnen informieren können .Senden des folgenden JSON an Mailchimp API 3.0 - Fehler bekommen, was fehlt mir?

Dies wird mit Google App Scripts UrlFetchApp.fetch eingereicht. Um die Fehlermeldung zu lesen, habe ich meinen JSON mit curl eingereicht. Ich gehe zurück zu dem, was ich vor ein paar Tagen versucht habe, indem ich die Art und Weise verwende, wie Google behauptet, dass ich JSON einreichen und spezifische Parameter für URLFetchApp.fetch angeben soll.

{ 
    "method": "POST", 
    "Authorization": "Basic loginname:apikey", 
    "Content-Type": "application/json", 
    "payload": { 
     "status": "subscribed", 
     "email_address": "[email protected]", 
     "merge_fields": { 
      "FNAME": "Tony", 
      "LNAME": "Blackmon" 
     } 
    } 
} 

Die Methode und Autorisierung ist für URLFetchApp.fetch zu wissen, dass es sich um eine POST-Anforderung ist, und welche die Authentifizierung zu senden. Das einzige, was an MailChimp gesendet wird, ist angeblich das JSON-Objekt "Payload" (laut Google-Dokumentation).

Wenn ich nur das Nutzlastobjekt mit curl übergebe, scheint es ohne Probleme zu funktionieren. Wenn ich sage, dass es zu funktionieren scheint, bleibt meine Liste leer, aber wenn ich den curl-Befehl ein zweites Mal wiederhole, wird mir gesagt, dass der Benutzer bereits auf der Liste ist. Ich wartete ein paar Minuten und vergewisserte mich, dass der Benutzer tatsächlich auf der Liste ist.

Ich bekomme einen Fehler zurück von der Ausführung des Google App Script, aber das macht keinen Sinn. Lassen Sie mich gehen und löschen Sie meinen Benutzer, und führen Sie es erneut aus, und sehen Sie, was ich zurückbekomme.

Antwort

0

diese Figured aus ... Hier ist alles von meinem Code MailChimp zu senden:

function sendToMailChimp(first_name, last_name, email_address){ 

    var loginKey = Utilities.base64Encode("bch:" + API_KEY); 

    var payload = {"status":"subscribed", 
       "email_address":email_address, 
       "merge_fields":{ 
         "FNAME":first_name, 
         "LNAME":last_name}}; 

    var payload = JSON.stringify(payload); 

    var options = {"method":"POST", 
       "headers":{ "Authorization":"Basic " + loginKey}, 
       "Content-Type":"application/json", 
       "muteHttpExceptions" : true, 
       "payload":payload }; 

    //var options = JSON.stringify(options); 

    Logger.log(options); 

    var response = UrlFetchApp.fetch(mc_base_url,options); 
    Logger.log(response); 

} 

dieser Linie JSON.stringify kommentiert für „Optionen“ nicht passieren müssen. Es machte URLFetchApp.fetch versauen seine Optionen. Stattdessen muss ich nur JSON.stringify die Nutzlast. Nun, da ich zwei Tage damit verschwendet habe, werden hoffentlich alle, die in dieses Problem geraten, aufgrund dieses Posts daran vorbeikommen.