JS Code
Executes custom JavaScript code to transform items.
Overview
The JS Code node runs JavaScript for each item, giving you full programming control over transformations. Use it for:
- Complex calculations
- Custom data parsing
- Conditional logic
- String manipulation
- Data validation
Parameters
| Parameter | Description | Required |
|---|---|---|
| JS Code | JavaScript code to execute | Yes |
Code
Write JavaScript that processes the item. The code has access to:
item- The current input item
Return the transformed item, a new object, or an array of items.
Output
The return value of your code becomes the output. If you return an array, each element becomes a separate output item.
Input:
{ "firstName": "John", "lastName": "Doe", "price": "19.99" }
Code:
return {
fullName: item.firstName + ' ' + item.lastName,
price: parseFloat(item.price),
formattedPrice: '$' + parseFloat(item.price).toFixed(2)
};
Output:
{
"fullName": "John Doe",
"price": 19.99,
"formattedPrice": "$19.99"
}
Examples
Parse JSON String
const data = JSON.parse(item.jsonString);
return {
...item,
parsedData: data
};
Conditional Transformation
const status = item.amount > 1000 ? 'high' : 'normal';
const priority = item.urgent ? 1 : 2;
return {
...item,
status,
priority
};
String Manipulation
return {
...item,
email: item.email.toLowerCase().trim(),
slug: item.title.toLowerCase().replace(/\s+/g, '-'),
initials: item.firstName[0] + item.lastName[0]
};
Date Handling
const date = new Date(item.timestamp);
return {
...item,
year: date.getFullYear(),
month: date.getMonth() + 1,
day: date.getDate(),
formatted: date.toISOString().split('T')[0]
};
Array Processing
const tags = item.tagString.split(',').map(t => t.trim());
const uniqueTags = [...new Set(tags)];
return {
...item,
tags: uniqueTags,
tagCount: uniqueTags.length
};
Validation
const errors = [];
if (!item.email || !item.email.includes('@')) {
errors.push('Invalid email');
}
if (!item.name || item.name.length < 2) {
errors.push('Name too short');
}
return {
...item,
isValid: errors.length === 0,
validationErrors: errors
};
Return Multiple Items
// Split one item into multiple
return [
{ type: 'header', data: item.header },
{ type: 'body', data: item.body },
{ type: 'footer', data: item.footer }
];
Object Restructuring
return {
customer: {
name: item.customerName,
email: item.customerEmail
},
order: {
id: item.orderId,
total: item.orderTotal
}
};
Available Context
| Variable | Description |
|---|---|
item | Current input item object |
Tips
- Always return an object or array (the output item(s))
- Use
...itemspread to preserve existing fields - Code runs in an isolated JavaScript VM
- Errors in code create error items
- Return an array to output multiple items from one input
- Test with sample data before running on full dataset
- Complex logic is fine, but keep it readable