将以下JSON发送到Mailchimp API 3.0——出现错误,我遗漏了什么?
我正在尝试将以下JSON提交到我的列表中。我的工作是让向我们的501(c)(3)慈善机构捐款的人自动收到一张用于税务目的的收据,并注册到我们的“捐赠者”名单,以便我们在未来通知他们新的资源和活动 这是与谷歌应用程序脚本URLFACHTAPP.fetch一起提交的。为了读取错误消息,我提交了带有curl的JSON。我回到了几天前的尝试,使用谷歌声称我应该提交JSON并为URLFetchApp.fetch指定特定参数的方式将以下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
{
"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有效负载。现在我已经在这上面浪费了两天时间,希望如果其他人遇到这个问题,他们能够通过这篇文章