Skip to main content

I'm going based on this: https://airtable.com/developers/web/api/create-comment

The authorization is fine, but for some reason within scripting it keeps giving the error that the body isn't parsable. My script is as follows: 

 

 

 

//Variables let inputConfig = input.config(); let recordID = inputConfig.recordID; let commentContent = "Hello World"; let url = 'https://api.airtable.com/v0/appksePpf16d6MPdp/tbl4ZEftsWgo84Ldu/' + recordID + '/comments'; console.log(commentContent); //Create the Comment let response = await fetch(url, { method: 'POST', headers: { 'Authorization': 'Bearer [private]', 'Content-Type': 'application/json', }, body: { //For some reason, it's not accepting this body 'text': commentContent } }); console.log(await response.text()); //console.log(await response.json());

 

 

 

I've gotten it to work with this exact same data in Spectator, so I'm really puzzled as to why this doesn't work. 

Hmm, try doing a JSON.stringify on commentContent?

let bodyContent = JSON.stringify({ 'text': commentContent }); let response = await fetch(url, { method: 'POST', headers: { 'Authorization': 'Bearer [private]', 'Content-Type': 'application/json', }, body: bodyContent // Pass the stringified JSON as the body });

Hmm, try doing a JSON.stringify on commentContent?

let bodyContent = JSON.stringify({ 'text': commentContent }); let response = await fetch(url, { method: 'POST', headers: { 'Authorization': 'Bearer [private]', 'Content-Type': 'application/json', }, body: bodyContent // Pass the stringified JSON as the body });

Whelp, that did it. Thank you Adam! 

I took what I made and converted it into a script for anyone else looking to do this. You can find a pastebin for it here, but here it is pasted below as well: 

 

 

 

/******* Instructions 1. Configure the variables below under "Configuration" 2. Set up your inputs. You can modify the configComment however you please but make configRecord just drop in a string for the record ID. 3. Test it to see if it works. If it isn't the console outputs the error for you. *******/ let inputConfig = input.config(); //Configuration let configBase = "app---";// You can retrieve these values from the URL of any open table let configTable = "tbl---"; let configRecord = inputConfig.recordID;//Pass a value into here from input variables let configComment = "Hello there! This is a comment!";//Modify however you want. let configBearerToken = "---";//To generate this, look here: https://airtable.com/create/tokens //Variables let bodyContent = JSON.stringify({ 'text': configComment }); let url = 'https://api.airtable.com/v0/' + configBase + '/' + configTable + '/' + configRecord + '/comments'; //Create the Comment let response = await fetch(url, { method: 'POST', headers: { 'Authorization': 'Bearer ' + configBearerToken, 'Content-Type': 'application/json', }, body: bodyContent }); console.log(await response.text());