Help

Upcoming database upgrades. Airtable functionality will be reduced for ~15 minutes at 06:00 UTC on Feb. 4 / 10:00 pm PT on Feb. 3. Learn more here

Issue with input.config when Adding a subscriber using Mailerlite API

Topic Labels: Automations
195 5
cancel
Showing results for 
Search instead for 
Did you mean: 
yva2002
5 - Automation Enthusiast
5 - Automation Enthusiast
Right now, I have set up a base with a form. Upon submitting the form, I want this script to run to add the preferred email & name as subscribers in the Mailerlite API. Here's the script, it's pretty straightforward. I make a POST request to the MailerLite API using data from input.config to create the body of the request.

 

let inputConfig = input.config();

//selecting preferred email for mailerlite
if (inputConfig.other_email != null){
inputConfig.preferred_email = inputConfig.other_email;
}

//constructing record for mailerlite
let content = {
"email":inputConfig.columbia_email,
"name":inputConfig.name,
"groups": ["1",]
};

//setting up mailerlite API call
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Accept", "application/json");
myHeaders.append("Authorization", "Bearer {$api_key}");

var requestOptions = {
method: 'POST',
headers: myHeaders,
body: JSON.stringify(content),
redirect: 'follow'
};

fetch("https://connect.mailerlite.com/api/subscribers", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));

 

 

When I test this locally, I manually set 

 

 

let inputConfig = {
"preferred_email" : "test@test.com",
"other_email": null,
"name": "test dummy"
}

 

 

This works fine! I get the correct response, 

 

 

{"data":{"id":"...","email":"test@test.com","status":"active","source":"api","sent":0,"opens_count":0,"clicks_count":0,"open_rate":0,"click_rate":0,"ip_address":null,"subscribed_at":"2022-12-29 17:50:36","unsubscribed_at":null,"created_at":"2022-12-29 17:50:35","updated_at":"2022-12-29 17:50:36","fields":{"name":null,"last_name":null,"company":null,"country":null,"city":null,"phone":null,"state":null,"z_i_p":null,"school":null,"class_year":null,"subtype":null},"groups":[{"id":"1","name":"Main Listserv","active_count":255,"sent_count":2487,"opens_count":1311,"open_rate":{"float":0.52714113389626,"string":"52.71%"},"clicks_count":151,"click_rate":{"float":0.060715721753116,"string":"6.07%"},"unsubscribed_count":8,"unconfirmed_count":0,"bounced_count":7,"junk_count":0,"created_at":"2022-03-30 09:33:40"}],"location":null,"opted_in_at":null,"optin_ip":null}}

 

However, when I run the script inside the script editor in the automations center in Airtable, I get a TypeError back from the MailerLite API. Why might this be? I thought it could be an issue with the input.config and the way I am accessing it, but I am not sure. Maybe another pair of eyes can help?

Thanks!

5 Replies 5

@yva2002 Couple of questions that might suggest. Don't you forget to put variables on the left pane of your script editor? Is the response correct not showing "name": "test dummy"?

Yes, I have selected the variables on the left pane. When I console.log(inputConfig) I get

{name: "Testing Dummy "preferred_email: "test@test.com"other_email: null}

I console.log(content) I get

{email: "test@test.com", name: "Testing Dummy ", groups: Array(1)}

as desired. 

So I can assume that the request being sent, as far as I can tell, seems correct? Except that it must not be, because I get an error from Mailerlite API as the response

Error {name: "TypeError"}

Screen Shot 2022-12-29 at 2.46.44 PM.png

Here's the actual console window for editing the script (I have a different email here than test@test.com, this is an email I can access the inbox of for testing reasons) - I noticed that it does give error highlighting for some attributed of inputConfig, but that seems to be because I previously had different names for variables inside inputConfig which haven't changed for the internal debugger 

It seems not ok when you try to assign a value to the input variable "preffered_email". You can use variables only for data input. If you need to assign a value to a cell you should use UpdateRecordAsync function.

Update, it wasn't at all related to airtable or input config - the redirect request was causing the problem. Thanks for all your replies!