JavaScript: Consolidate multiple conditional outputs into a single list for Zapier

I’m working on a Zapier integration that checks spreadsheet values and creates a list of missing items. Right now, my code looks at each column and adds an item to the output if it’s marked as “FALSE”. But Zapier treats each output as a separate line item, which isn’t ideal for email formatting.

Here’s what I want to achieve:

You're missing:
Item 1
Item 2
Item 5
Item 7

Instead of:

You're missing:
Item 1
Item 2

Item 5

Item 7

My current code looks like this:

var COL1 = inputData.COL1;
var item1 = (COL1 === "FALSE") ? "Adult Manikin with Feedback Devices" : "";

var COL2 = inputData.COL2;
var item2 = (COL2 === "FALSE") ? "Extra Batteries for AED Trainers" : "";

output = {item1, item2};

How can I modify this to return a single string with all the missing items, separated by line breaks? This way, Zapier will treat it as one item and format the email correctly. Any suggestions?

I’ve dealt with a similar issue in Zapier before. Here’s a solution that worked for me:

Create an array to store the missing items, then join them into a single string at the end. Something like this:

var missingItems = [];

if (inputData.COL1 === 'FALSE') missingItems.push('Adult Manikin with Feedback Devices');
if (inputData.COL2 === 'FALSE') missingItems.push('Extra Batteries for AED Trainers');
// Add more checks for other columns as needed

var output = {
  missingItems: missingItems.length ? 'You're missing:\n' + missingItems.join('\n') : ''
};

This approach consolidates everything into one output, which Zapier will treat as a single item. The ‘\n’ creates line breaks in the email. You can easily add more items by following the same pattern for additional columns. Hope this helps!

Have you considered using a reduce function? It’s a neat way to handle this:

const items = {
COL1: ‘Adult Manikin with Feedback Devices’,
COL2: ‘Extra Batteries for AED Trainers’
};

const missingItems = Object.entries(items).reduce((acc, [col, item]) => {
if (inputData[col] === ‘FALSE’) acc.push(item);
return acc;
}, );

output = {
missingItems: missingItems.length ? You're missing: ${missingItems.join(' ')} : ‘’
};

This approach is scalable and clean. You can easily add more items to the ‘items’ object without changing the core logic. It’ll work well with Zapier and give you that nice, consolidated list you’re after.

hey mate, i’ve got a trick for ya. try this:

let missingStuff = ;
if (inputData.COL1 === ‘FALSE’) missingStuff.push(‘Adult Manikin’);
if (inputData.COL2 === ‘FALSE’) missingStuff.push(‘Extra Batteries’);

output = {missingItems: missingStuff.length ? ‘You’re missing:\n’ + missingStuff.join(‘\n’) : ‘’};

this should give u what u want in zapier. good luck!