Skip to main content

How can I create a duplicate row based on the number of quantities? On the attached image you’ll see that a row is created with the quantities 2. What I want to happen is create single rows showing quantity 1 depending on the quantity. In the case of this image, I want to create 2 separate rows instead of only one row with quantity 2. If quantity is 3, then create 3 rows showing quantity 1. If quantity is 4, then create 4 rows showing quantity 1. Ect. Disregard first row, that was triggered to show how I would like it to show.  Is this possible?

 

You can achieve this directly in gsheet

Sample data set

 

Data set

Formulae : =ArrayFormula(vlookup(transpose(split(query(rept(row(A2:A)&" ",F2:F),,9^9)," ")),{row(A2:A),A2:E},{2,3,4,5,6},0))

 

Explanation : https://infoinspired.com/google-docs/spreadsheet/insert-duplicate-rows-in-google-sheets/


Hi @Eduardo13 

A code block would be the most efficient way to do this in Zapier. You’ll need to map all of your line item data into the codes input and then use a split() function to duplicate lines n times based on their qtys. 
 

 


Hi thank you @GetUWired. I have tried doing what you said, this is how it came out. I only have 3 line item data points but, it still isn’t duplicating the lines. Is there something I’m missing? 

 


@subhash Thank you also so much for your response. The goal I have in mind is to do this in Zapier since I will be having a lot of data automatically pushing into the google sheet and working with formulas inside the gsheet will make it less autonomous but, I really appreciate your response and this other approach. 


@GetUWired I also tried it with the document you provided but, I’m getting a error. Is there something I’m missing? 

 


@Eduardo13
That document was intended just to get you started. 

Below is the code i would use to split it up and duplicate n number of times. You should be able to then map these outputs into the Create Rows action

let qtys = inputData.qty.split(",");
let tags = inputData.tag.split(",");
let variants = inputData.variant.split(",");

let outputLines = ];

qtys.forEach((qty,index) => {
for (var i=0;i<qty;i++) {
outputLines.push({
'Quantity': 1,
'Tag Name': tagssindex],
'Variant Name': variantssindex]
})
}
})

return {outputLines}