将以下JSON发送到Mailchimp API 3.0——出现错误,我遗漏了什么?

将以下JSON发送到Mailchimp API 3.0——出现错误,我遗漏了什么?,json,curl,google-apps-script,mailchimp,Json,Curl,Google Apps Script,Mailchimp,我正在尝试将以下JSON提交到我的列表中。我的工作是让向我们的501(c)(3)慈善机构捐款的人自动收到一张用于税务目的的收据,并注册到我们的“捐赠者”名单,以便我们在未来通知他们新的资源和活动 这是与谷歌应用程序脚本URLFACHTAPP.fetch一起提交的。为了读取错误消息,我提交了带有curl的JSON。我回到了几天前的尝试,使用谷歌声称我应该提交JSON并为URLFetchApp.fetch指定特定参数的方式 { "method": "POST", "Authoriza

我正在尝试将以下JSON提交到我的列表中。我的工作是让向我们的501(c)(3)慈善机构捐款的人自动收到一张用于税务目的的收据,并注册到我们的“捐赠者”名单,以便我们在未来通知他们新的资源和活动

这是与谷歌应用程序脚本URLFACHTAPP.fetch一起提交的。为了读取错误消息,我提交了带有curl的JSON。我回到了几天前的尝试,使用谷歌声称我应该提交JSON并为URLFetchApp.fetch指定特定参数的方式

{
    "method": "POST",
    "Authorization": "Basic loginname:apikey",
    "Content-Type": "application/json",
    "payload": {
        "status": "subscribed",
        "email_address": "email@example.com",
        "merge_fields": {
            "FNAME": "Tony",
            "LNAME": "Blackmon"
        }
    }
}
该方法和授权用于URLFetchApp.fetch了解这是一个POST请求,以及发送什么身份验证。唯一发送给MailChimp的是“有效载荷”JSON对象(根据谷歌文档)

如果我仅使用curl提交有效负载对象,它似乎可以正常工作。当我说它似乎有效时,我的列表保持为空,但是如果我再次运行curl命令,我会被告知用户已经在列表中。我等了几分钟,确认用户确实在列表中


不过,我在运行谷歌应用程序脚本时发现了一个错误,这毫无意义。让我去删除我的用户,然后再次运行,看看我得到了什么。

解决了这个问题。。。以下是我要发送给MailChimp的所有代码:

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

}

不需要为“选项”添加注释行JSON.stringify。它让URLFetchApp.fetch把它的选项搞得一团糟。相反,我只需要JSON.stringify有效负载。现在我已经在这上面浪费了两天时间,希望如果其他人遇到这个问题,他们能够通过这篇文章度过难关。

解决了这个问题。。。以下是我要发送给MailChimp的所有代码:

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

}
不需要为“选项”添加注释行JSON.stringify。它让URLFetchApp.fetch把它的选项搞得一团糟。相反,我只需要JSON.stringify有效负载。现在我已经在这上面浪费了两天时间,希望如果其他人遇到这个问题,他们能够通过这篇文章