Google apps script 通过Google应用程序脚本将订阅者添加到Mailchimp列表
我正在尝试使用连接到外部mailchimp API的google文档和google应用程序脚本,将订阅者自动添加到mailchimp邮件列表中。每当我尝试测试脚本时,我都会从StackDriver日志收到一个“坏值”异常Google apps script 通过Google应用程序脚本将订阅者添加到Mailchimp列表,google-apps-script,mailchimp-api-v3.0,Google Apps Script,Mailchimp Api V3.0,我正在尝试使用连接到外部mailchimp API的google文档和google应用程序脚本,将订阅者自动添加到mailchimp邮件列表中。每当我尝试测试脚本时,我都会从StackDriver日志收到一个“坏值”异常 var payload = { "email_address": email, "status_if_new": "subscribed", "merge_fields":
var payload = {
"email_address": email,
"status_if_new": "subscribed",
"merge_fields": {
FNAME: first_name,
LNAME: last_name
},
};
var headers = {
"contentType": "application/json",
"Authorization": "apikey " + API_KEY,
};
var data = {
"method": "PUT",
"muteHttpExceptions": false,
"headers": headers,
"payload": payload,
};
var json = Utilities.jsonStringify(data);
//DEBUG
Logger.log(json);
Logger.log(endpoint);
// call the Mailchimp API
try {
var response = UrlFetchApp.fetch(endpoint, json);
if (response.getResponseCode() === 200) {
// all good!
Logger.log("Success");
Logger.log(response);
} else {
Logger.log("Issues");
Logger.log(response);
}
} catch (err) {
// handle the error here
Logger.log("Error");
Logger.log(err);
}
2020年9月5日下午1:02:53信息异常:错误值
通过对curl的进一步调查,我发现手动发送具有相同负载和头的请求会得到此响应
curl-X PUT'https://{server}.api.mailchimp.com/3.0/lists/{my_list}/members/{member_hash}
-H{“授权”:“apikey{API_KEY}”,“contentType”:“application/json”}
-d'{“电子邮件地址”:test@test.com“,“status_if_new”:“subscribed”,“merge_字段”:{“LNAME”:“test”,“FNAME”:“test”}},“muteHttpExceptions”:false}”
“错误”:[{“字段”:“电子邮件地址”,“消息”:“此值不应为空。”}]
为什么API无法识别我提供的电子邮件?主要问题是,您正在传递一个JSON字符串作为
params
参数,其中需要一个对象。您不需要串接所有的数据
,而只需要串接有效负载。(请注意应用程序脚本文档中链接的示例。)
我怀疑您还将面临Utilities.jsonStringify()
的问题。改用
我还将contentType从标题中移到数据中,因为这是在fetch()
方法中指定的,但实际上它对应用程序没有影响
var payload = {
"email_address": email,
"status_if_new": "subscribed",
"merge_fields": {
FNAME: first_name,
LNAME: last_name
},
};
var headers = {
"Authorization": "apiKey " + API_KEY
};
var data = {
"method": "PUT",
"muteHttpExceptions": false,
"headers": headers,
"contentType": "application/json",
"payload": JSON.stringify(payload) // The payload should be stringified
};
//DEBUG
Logger.log(endpoint);
// call the Mailchimp API
try {
var response = UrlFetchApp.fetch(endpoint, data); // pass in data, not json
if (response.getResponseCode() === 200) {
// all good!
Logger.log("Success");
Logger.log(response);
} else {
Logger.log("Issues");
Logger.log(response);
}
} catch (err) {
// handle the error here
Logger.log("Error");
Logger.log(err);
}
如果您只打算添加订阅者,那么我建议您使用端点。它只是简单一点,不需要生成成员散列