如何从数据集中输出多个产品?

时间:2020-07-27 00:04:27

标签: javascript loops zapier

我不确定设置方式是否是最好的方式。我正在使用Zapier更新电子表格并为购买的每种产品添加新行。购买信息将通过电子邮件输入,然后一个JS代码块将运行至:

  1. 分割每行
  2. 将特定信息存储到特定变量中,例如“产品名称,购买日期,购买价格”等。

我遇到的问题是识别其他产品并输出它们。第一个产品从行项目“ 46”或“ 48”开始(if / else的目的)。随后的每个产品名称(如果有)将在以后有5个订单项。例如,如果乘积从46开始,乘积2将为51,或者乘积1从48开始,乘积2将为53。我不知道如何创建循环遍历该行的循环或函数。项,识别每个产品,然后输出每个产品。

做到这一点的最佳方法是什么?另外,请查看我的代码,让我知道它是否可以以任何方式清理/简化。

这是我当前的代码:

    //Define emailBody variable
    var emailBody = input.emailBody;
    
    //Find Index of blog and Subtotal and extracts data between
    var blogIndex = emailBody.search("blog");
    var subtotalIndex = emailBody.search ("SUBTOTAL");
    var slice = emailBody.slice(subtotalIndex, blogIndex);
    
    //Count # of SQ values
    var countProducts = emailBody.search("SQ");
    var splitSQ = slice.split("SQ");
    const totalProducts = splitSQ.length;
    const totalProductsLoop = totalProducts -1;
    
    
    //Split email body by newline:
    var splitBody = emailBody.split("\n");
    var length = splitBody.length;
    
    if (splitBody[46].length <2 && splitBody[47].length <2) {
    var name = splitBody[26].trim();
    var email = splitBody[31].trim();
    var productName = splitBody[48].trim();
    var productID = splitBody[49].trim();
    var price = splitBody[51].trim();

// My attempt at trying to find additional products and output them    
      for(let i = 0; i < totalProductsLoop.length; i += 1){
      var additionalProduct = productName[i] + 5;
      return additionalProduct;
    };
    }
    
    else if (splitBody[46].length >1) {
    var name = splitBody[26].trim();
    var email = splitBody[31].trim();
    var productName = splitBody[46].trim();
    var productID = splitBody[47].trim();
    var price = splitBody[49].trim();
    
// My attempt at trying to find additional products and output them
      for(let i = 0; i < totalProductsLoop.length; i += 1){
        var newProductName = productName + 5;  
        var additionalProduct = newProductName  ;
      return additionalProduct;
    };
    }
    
    
    
    var splitLength=splitBody[46].length;
    
    var product = productName.concat("- ", productID);
    
    //Output new variables
    output = [{Blog_Index: blogIndex, Subtotal_Index: subtotalIndex, Splice: slice, Split_Length: splitLength, Length: length, Name: name, Email: email, Product_Name: productName, Product_ID: productID, Product: product, Price: price, Split: splitBody, Product_Split: splitSQ, Total_Products: totalProducts - 1, Additional_Products: productsNames}];

这是代码输出(简化为删除PII)

**Blog_Index**
value

**Subtotal_Index**
value

**Splice**
SUBTOTAL
Product 1
Product 1 ID
1
$50.00
$50.00
Product 2
Product 2 ID
1
$50.00
$50.00
Item Subtotal
Shipping & Handling
Sales Tax
TOTAL
$100.00
$0.00
$9.30
$100.00

**Split_Length**
19

**Length**
98

**Name**
Purchaser Name

**Email**
Purchaser Email address

    **Product_Name**
    Product 1
    
    **Product_ID**
    product ID 1
    
    **Product**
    product 1 - product ID 1
    Price
    $50.00
^^^ I need this extraction for every product purchase iteration^^^

**Split** // This splits all of the data into line items
1 - 45
46
Product Name 1
47
product ID
48
1
49
$50.00
50
$50.00
51
Product Name 2
52
product ID
53
1
54
$50.00
55
$50.00
56
57
58
59
60 - 98 value

**Product_Split**
0
SUBTOTAL
Product Name
1
3845354
1
$50.00
$50.00
Product Name 2
2
1760500
1
$50.00
$50.00
Item Subtotal
Shipping & Handling
Sales Tax
TOTAL
$100.00
$0.00
$9.30
$100.00

**Total_Products**
2

0 个答案:

没有答案