将以下 JSON 发送到 Mailchimp API 3.0 -- 出现错误,我错过了什么?
Sending the following JSON to Mailchimp API 3.0 -- Getting errors, what am I missing?
我正在尝试将以下 JSON 提交到我的列表中。我正在努力,以便向我们的 501(c)(3) 慈善机构捐款的人会自动通过电子邮件收到用于税收目的的收据,并注册我们的 "Donors" 列表,以便我们将来可以通知他们新资源和活动。
这是与 Google 应用脚本 UrlFetchApp.fetch 一起提交的。为了阅读错误信息,我用 curl 提交了我的 JSON。我已经回到几天前尝试过的方法,使用 Google 声明我应该提交 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"
}
}
}
Method 和 Authorization 是为了 URLFetchApp.fetch 知道这是一个 POST 请求,以及发送什么身份验证。据推测,唯一发送到 MailChimp 的是 "payload" JSON 对象(根据 Google 文档)。
如果我使用 curl 仅提交有效负载对象,它似乎可以正常工作。当我说它似乎有效时,我的列表仍然是空的,但如果我第二次重新 运行 curl 命令,我被告知用户已经在列表中。我等了几分钟,确认用户确实在列表中。
不过,我从 运行 宁 Google 应用程序脚本返回错误,这没有任何意义。让我去删除我的用户,然后 运行 再次删除,看看我得到了什么。
想通了...这是我要发送到 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);
}
"options" 的注释行 JSON.stringify 不需要发生。它让 URLFetchApp.fetch 弄乱了它的选项。相反,我只需要 JSON.stringify 有效负载。既然我已经在这个问题上浪费了两天时间,希望如果其他人遇到这个问题,他们将能够因为这个 post.
而克服它
我正在尝试将以下 JSON 提交到我的列表中。我正在努力,以便向我们的 501(c)(3) 慈善机构捐款的人会自动通过电子邮件收到用于税收目的的收据,并注册我们的 "Donors" 列表,以便我们将来可以通知他们新资源和活动。
这是与 Google 应用脚本 UrlFetchApp.fetch 一起提交的。为了阅读错误信息,我用 curl 提交了我的 JSON。我已经回到几天前尝试过的方法,使用 Google 声明我应该提交 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"
}
}
}
Method 和 Authorization 是为了 URLFetchApp.fetch 知道这是一个 POST 请求,以及发送什么身份验证。据推测,唯一发送到 MailChimp 的是 "payload" JSON 对象(根据 Google 文档)。
如果我使用 curl 仅提交有效负载对象,它似乎可以正常工作。当我说它似乎有效时,我的列表仍然是空的,但如果我第二次重新 运行 curl 命令,我被告知用户已经在列表中。我等了几分钟,确认用户确实在列表中。
不过,我从 运行 宁 Google 应用程序脚本返回错误,这没有任何意义。让我去删除我的用户,然后 运行 再次删除,看看我得到了什么。
想通了...这是我要发送到 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);
}
"options" 的注释行 JSON.stringify 不需要发生。它让 URLFetchApp.fetch 弄乱了它的选项。相反,我只需要 JSON.stringify 有效负载。既然我已经在这个问题上浪费了两天时间,希望如果其他人遇到这个问题,他们将能够因为这个 post.
而克服它