Zapier: BigCommerce в Google Sheet, новая строка для каждого элемента

Я успешно связал свою учетную запись BigCommerce с учетной записью Google Sheets (Drive), поэтому каждый раз, когда я получаю новый заказ в своем магазине, заказ автоматически экспортируется в Google Sheet. К сожалению, весь заказ перечислен в одной строке с несколькими элементами, добавленными в одну ячейку. Что мне нужно, так это иметь каждый продукт на своей собственной строке; например, если кто-то заказывает три разных продукта, Zapier создаст три новые строки. Эта функция существует при прямом экспорте заказов из BigCommerce, но «Zap» не использует функцию экспорта BigCommerce при переносе информации о заказах из моего магазина на лист Google.

Я знаю, что это выстрел в темноте, но я надеюсь, что у кого-то может быть решение, которое я могу реализовать. Спасибо за помощь!

1 ответ

  1. Я создал сценарий, который, возможно, может быть использован или изменен, по крайней мере, пока вы не найдете, если процесс может быть сделано в Zapier.

    Вы можете попробовать сценарий в следующем ss: https://docs.google.com/spreadsheets/d/1ggNYlLEeN3UYtZC_KlOGwpyII9CzOLKMnIOKIDrPJPM/edit?usp=sharing

    Сценарий предполагает, что заказы поступают на вкладку с именем Zapier. По мере настройки вы будете запускать сценарий через пользовательское меню.

    Если есть 2 заказа или более, нажмите меню для каждого заказа.

    Полные строки отображаются в списке FullList листа.

    (если вы хотите играть / попробовать снова, вам придется вручную удалить строки в FullList, как только они отображаются).

    function processForNewOrders() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sourceSheet = ss.getSheetByName('Zapier');
      var destinationSheet = ss.getSheetByName('FullList');
    
      var sourceValues = sourceSheet.getDataRange().getValues();
      var destinationValues = destinationSheet.getDataRange().getValues();
      var index = [];
      destinationValues.forEach( function (x) {
        index.push(x[0]);
      })
      var newOrders = [];
      for (var y = sourceValues.length -1 ; y > 0 ; y --){
        if(sourceValues[y][0].toString().indexOf('po_number') != -1 ) continue;
        var i = index.indexOf(sourceValues[y][0]);
        if(i != -1) break; // This readies only the fresh orders for processing
        newOrders.push(sourceValues[y]);
      }
    
      Logger.log(newOrders)
      for (var j = 0 ; j < newOrders.length ; j++){
        var output = [];
        var orderLine = newOrders[j];
        Logger.log('orderLine = ' + orderLine);
        var circuit = 0;
        var items = 1
        while (circuit < items){
          var row = [];
          for (var z = 0 ; z < orderLine.length; z++){
            var cell = orderLine[z];
            //      Logger.log(cell);
            var lines = cell.toString().split(',');
            if(lines.length > 1)  items = lines.length;
            row.push(lines[circuit] ? lines[circuit] : lines[0]);
            //      Logger.log('row =' + row);
          }
          circuit ++;
          Logger.log('circuit circuit circuit =' + circuit)
    
          output.push(row);
        }
      }
      Logger.log(output);
      if(output != undefined)
      destinationSheet.getRange(index.length+1,1,output.length,output[0].length).setValues(output);
    }
    
    
    function onOpen() {
      var ui = SpreadsheetApp.getUi();
      // Or DocumentApp or FormApp.
      ui.createMenu('Custom Menu')
          .addItem('Process new order', 'processForNewOrders')
                .addToUi();
    }