Hi everyone! Im new to n8n and im trying to create a workflow that takes quantity takeoffs from google sheets that is then sent to specific suppliers depending on the CSI division they belong to for RFQ. However, I am stuck at the data cleaning part. The number of items went from 79 to 77 and I think I can see where the missing two are but I dont know what it means. I would really appreciate a layman’s explanation and solution for this. Thank you!!
Please share your workflow
Share the output returned by the last node
[
{
“appended_CSI_Division”: [
“MASONRY”
],
“Unit”: “Block(s)”,
“Quantity”: 4995,
“‘Size/Measurement’”: “8" x 8" x 16"”,
“‘Material_’”: “CMU Block”
},
{
“appended_CSI_Division”: [
“MASONRY”
],
“Unit”: “Block(s)”,
“Quantity”: 762,
“‘Size/Measurement’”: “8" x 8" x 16"”,
“‘Material_’”: “Bond Beam Block”
},
{
“appended_CSI_Division”: [
“MASONRY”
],
“Unit”: “Bag(s)”,
“Quantity”: 523.04,
“‘Size/Measurement’”: “11 Blocks/ Bag, 80 LB Bag”,
“‘Material_’”: “Block Mortar”
},
{
“appended_CSI_Division”: [
“MASONRY”
],
“Unit”: “Ton(s)”,
“Quantity”: 28.76,
“‘Size/Measurement’”: “200 Blocks/Ton”,
“‘Material_’”: “Brick Sand”
},
{
“appended_CSI_Division”: [
“MASONRY”
],
“Unit”: “CU YD”,
“Quantity”: 28.99,
“‘Size/Measurement’”: “0.34 CUYD/100 SQFT Wall, 4000 PSI”,
“‘Material_’”: “Grout”
},
{
“appended_CSI_Division”: [
“MASONRY”
],
“Unit”: “FT”,
“Quantity”: 3883.83,
“‘Size/Measurement’”: “9 Gage 304SS,”,
“‘Material_’”: “Ladder Wire”
},
{
“appended_CSI_Division”: [
“MASONRY”
],
“Unit”: “FT”,
“Quantity”: 1698.31,
“‘Size/Measurement’”: “#5 Rebar, 1.04 LBS/FT”,
“‘Material_’”: “Rebar”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 557,
“‘Size/Measurement’”: “2 x 4”,
“‘Material_’”: “Lumber Pre-Cut”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 32,
“‘Size/Measurement’”: “2 x 6”,
“‘Material_’”: “Lumber Pre-Cut”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 17,
“‘Size/Measurement’”: “2 x 4”,
“‘Material_’”: “Lumber P.T.”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 1,
“‘Size/Measurement’”: “2 x 6”,
“‘Material_’”: “Lumber P.T.”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 35,
“‘Size/Measurement’”: “2 x 6”,
“‘Material_’”: “Lumber P.T.”
},
{
“appended_CSI_Division”: [
“LUMBER”,
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 6,
“‘Size/Measurement’”: “2 x 8”,
“‘Material_’”: “Lumber P.T.”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 32,
“‘Size/Measurement’”: “3’-3 x 10”,
“‘Material_’”: “Lumber P.T.”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 34,
“‘Size/Measurement’”: “3’-3 x 7 3/4”,
“‘Material_’”: “Lumber P.T.”
},
{
“appended_CSI_Division”: [
“LUMBER”,
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 17,
“‘Size/Measurement’”: “2 x 4”,
“‘Material_’”: “Lumber”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 96,
“‘Size/Measurement’”: “2 x 4”,
“‘Material_’”: “Lumber”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 5,
“‘Size/Measurement’”: “2 x 6”,
“‘Material_’”: “Lumber”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 9,
“‘Size/Measurement’”: “2 x 12”,
“‘Material_’”: “Lumber”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 24,
“‘Size/Measurement’”: “(2) 2 x 8”,
“‘Material_’”: “Lumber”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 33,
“‘Size/Measurement’”: “2 x 8”,
“‘Material_’”: “Lumber”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 16,
“‘Size/Measurement’”: “16 FT Length”,
“‘Material_’”: “Lumber 24" Deep LSL”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 4,
“‘Size/Measurement’”: “4 FT Length”,
“‘Material_’”: “24" Deep Pre-Engineered Floor Trusses”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 4,
“‘Size/Measurement’”: “12 FT Length”,
“‘Material_’”: “24" Deep Pre-Engineered Floor Trusses”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 55,
“‘Size/Measurement’”: “30 FT Length”,
“‘Material_’”: “24" Deep Pre-Engineered Floor Trusses”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 30,
“‘Size/Measurement’”: “36 FT Length”,
“‘Material_’”: “Pre-Engineered Roof Trusses”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 12,
“‘Size/Measurement’”: “40 FT Length”,
“‘Material_’”: “Pre-Engineered Roof Trusses”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 70,
“‘Size/Measurement’”: “3/4"x4’ x 8’”,
“‘Material_’”: “3/4" PT Sub-Floor Plywood Floor Sheathing”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “EA”,
“Quantity”: 100,
“‘Size/Measurement’”: “3/4"x4’ x 8’”,
“‘Material_’”: “3/4" PT CDX Plywood Roof Sheathing”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “SQFT”,
“Quantity”: 94,
“‘Size/Measurement’”: “”,
“‘Material_’”: “Composite Balcony Floor Decking”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “FT”,
“Quantity”: 74,
“‘Size/Measurement’”: “”,
“‘Material_’”: “36" High Stair Guardrail”
},
{
“appended_CSI_Division”: [
“LUMBER”
],
“Unit”: “FT”,
“Quantity”: 38,
“‘Size/Measurement’”: “”,
“‘Material_’”: “42" High Balcony Guardrail”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “BUNDLE”,
“Quantity”: 33.26,
“‘Size/Measurement’”: “100 SQ.FT. / Bundle, 25 Yr”,
“‘Material_’”: “Asphalt Shingle”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “Roll(s)”,
“Quantity”: 8.32,
“‘Size/Measurement’”: “400 SQ FT / Roll, 15#”,
“‘Material_’”: “Asphalt Felt”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “EA”,
“Quantity”: 5.93,
“‘Size/Measurement’”: “10’ Lengths”,
“‘Material_’”: “Ridge Flashing”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “Bundles”,
“Quantity”: 1.8,
“‘Size/Measurement’”: “”,
“‘Material_’”: “Ridge Shingles”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “Roll(s)”,
“Quantity”: 6.67,
“‘Size/Measurement’”: “3’ X 75’”,
“‘Material_’”: “Ice and Water Shield”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “EA”,
“Quantity”: 5.93,
“‘Size/Measurement’”: “10’ Lengths”,
“‘Material_’”: “Ridge Vent”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “EA”,
“Quantity”: 3.72,
“‘Size/Measurement’”: “12 Widths, 10’ Lengths”,
“‘Material_’”: “Valley Flashing”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “EA”,
“Quantity”: 14.07,
“‘Size/Measurement’”: “12 Widths, 10’ Lengths”,
“‘Material_’”: “Hip Flashing”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “Bundles”,
“Quantity”: 4.26,
“‘Size/Measurement’”: “”,
“‘Material_’”: “Hip Shingles”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “BNDLS”,
“Quantity”: 2.63,
“‘Size/Measurement’”: “”,
“‘Material_’”: “Starter Shingles”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “EA”,
“Quantity”: 16.42,
“‘Size/Measurement’”: “1X6, 16’ Length”,
“‘Material_’”: “Fascia Board”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “EA”,
“Quantity”: 26.27,
“‘Size/Measurement’”: “2.5 X 1.5”,
“‘Material_’”: “Metal Drip Edge”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “EA”,
“Quantity”: 88,
“‘Size/Measurement’”: “spaced at 3’ o.c.”,
“‘Material_’”: “Gutter Hanger”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “EA”,
“Quantity”: 26.27,
“‘Size/Measurement’”: “spaced at 3’ o.c.”,
“‘Material_’”: “Gutter”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “EA”,
“Quantity”: 58.86,
“‘Size/Measurement’”: “1’ x 12’”,
“‘Material_’”: “Ceiling Soffit”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “FT”,
“Quantity”: 45.53,
“‘Size/Measurement’”: “1’ x 12’, 12’ 6’’ Lengths”,
“‘Material_’”: “F-Channel”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “EA”,
“Quantity”: 12,
“‘Size/Measurement’”: “(None)”,
“‘Material_’”: “Roof Drain”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “EA”,
“Quantity”: 12,
“‘Size/Measurement’”: “(None)”,
“‘Material_’”: “Clamping Ring and strainer”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “EA”,
“Quantity”: 12,
“‘Size/Measurement’”: “(None)”,
“‘Material_’”: “Water Block Flashing”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “EA”,
“Quantity”: 353,
“‘Size/Measurement’”: “4’ X10’ Sheets”,
“‘Material_’”: “Board”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “FT”,
“Quantity”: 2615.67,
“‘Size/Measurement’”: “2 Batten”,
“‘Material_’”: “Batten”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “Rolls”,
“Quantity”: 2.71,
“‘Size/Measurement’”: “9’ X 150’ Rolls”,
“‘Material_’”: “Moisture Barrier”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “EA”,
“Quantity”: 254,
“‘Size/Measurement’”: “10’ Length”,
“‘Material_’”: “Metal Furring”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “EA”,
“Quantity”: 22.74,
“‘Size/Measurement’”: “10’ Length (Assumed)”,
“‘Material_’”: “Flashing”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “Roll(s)”,
“Quantity”: 11.69,
“‘Size/Measurement’”: “50’ Rolls”,
“‘Material_’”: “Flashing Tape”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “EA”,
“Quantity”: 15.65,
“‘Size/Measurement’”: “10’ Length (Assumed)”,
“‘Material_’”: “Drip Edge Flashing”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “EA”,
“Quantity”: 20.93,
“‘Size/Measurement’”: “10’ Length”,
“‘Material_’”: “Flashing (Weep Screed)”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “EA”,
“Quantity”: 9,
“‘Size/Measurement’”: “50 sq.ft /Roll”,
“‘Material_’”: “Insulation”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “EA”,
“Quantity”: 80,
“‘Size/Measurement’”: “50 sq.ft /Roll”,
“‘Material_’”: “Insulation”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “EA”,
“Quantity”: 66,
“‘Size/Measurement’”: “50 sq.ft /Roll”,
“‘Material_’”: “Insulation”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “SQ FT”,
“Quantity”: 3215.98,
“‘Size/Measurement’”: “50 sq.ft /Roll”,
“‘Material_’”: “Insulation”
},
{
“appended_CSI_Division”: [
“THERMAL & MOISTURE PROTECTION”
],
“Unit”: “Roll(s)”,
“Quantity”: 45.89,
“‘Size/Measurement’”: “50 sq.ft /Roll”,
“‘Material_’”: “Insulation”
},
{
“appended_CSI_Division”: [
“FINISHES”
],
“Unit”: “EA”,
“Quantity”: 54,
“‘Size/Measurement’”: “1/2’’ THK , 4’ x 10’ Sheets”,
“‘Material_’”: “MR (Green Board) Gypsum Wall Board”
},
{
“appended_CSI_Division”: [
“FINISHES”
],
“Unit”: “EA”,
“Quantity”: 70,
“‘Size/Measurement’”: “5/8 , 4’ x 10’ Sheets”,
“‘Material_’”: “MR (Green Board) Gypsum Wall Board”
},
{
“appended_CSI_Division”: [
“FINISHES”
],
“Unit”: “EA”,
“Quantity”: 28,
“‘Size/Measurement’”: “5/8’’ THK, 4’ x 10’ Sheets”,
“‘Material_’”: “Type X Gypsum Wall Board”
},
{
“appended_CSI_Division”: [
“FINISHES”
],
“Unit”: “EA”,
“Quantity”: 388,
“‘Size/Measurement’”: “1/2’’ THK, 4’ x 10’ Sheets”,
“‘Material_’”: “Regular Gypsum Wall Board”
},
{
“appended_CSI_Division”: [
“FINISHES”
],
“Unit”: “EA”,
“Quantity”: 36,
“‘Size/Measurement’”: “1/2’’ THK, 4’ x 8’ Sheets”,
“‘Material_’”: “Tile backer board”
},
{
“appended_CSI_Division”: [
“FINISHES”
],
“Unit”: “EA”,
“Quantity”: 24.44,
“‘Size/Measurement’”: “250’ Roll”,
“‘Material_’”: “Joint Tape”
},
{
“appended_CSI_Division”: [
“FINISHES”
],
“Unit”: “EA”,
“Quantity”: 25.84,
“‘Size/Measurement’”: “4.5 Gal Joint Compound”,
“‘Material_’”: “Joint Compound”
},
{
“appended_CSI_Division”: [
“FINISHES”
],
“Unit”: “EA”,
“Quantity”: 1.4,
“‘Size/Measurement’”: “250’ Roll”,
“‘Material_’”: “Fire Tape”
},
{
“appended_CSI_Division”: [
“FINISHES”
],
“Unit”: “Box(s)”,
“Quantity”: 7.96,
“‘Size/Measurement’”: “#8 2 Screws Box Size: 5000 Qty”,
“‘Material_’”: “Drywall Screws”
},
{
“appended_CSI_Division”: [
“FINISHES”
],
“Unit”: “FT”,
“Quantity”: 3254,
“‘Size/Measurement’”: “1-5/8 16’’ O.C”,
“‘Material_’”: “Light Gage Galvanized Furring Channel”
},
{
“appended_CSI_Division”: [
“FINISHES”
],
“Unit”: “EA”,
“Quantity”: 181.2,
“‘Size/Measurement’”: “10’ Lengths”,
“‘Material_’”: “Inside Bead”
},
{
“appended_CSI_Division”: [
“FINISHES”
],
“Unit”: “EA”,
“Quantity”: 26.8,
“‘Size/Measurement’”: “10’ Lengths”,
“‘Material_’”: “Outside Bead”
},
{
“appended_CSI_Division”: [
“FINISHES”
],
“Unit”: “EA”,
“Quantity”: 194.62,
“‘Size/Measurement’”: “10’ Lenghts”,
“‘Material_’”: “J-Beads”
}
]
Im expecting an output something like this:
(Also, Is it correct to assume that the summary should only have 4 items since I want them to be grouped by division?)
CSI Division ##
Material: x
Size/Measurement: y
Quantity: #
Unit: z
Material: x2
Size/Measurement: y2
Quantity: #2
Unit: z2
- Database (default: SQLite):
- n8n EXECUTIONS_PROCESS setting (default: own, main):
- Running n8n via npm
- Operating system:



