2017-01-16 14 views
0

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

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

+0

Вы определенно можете разделить заказ в несколько рядов ... но я не могу сказать, если это может быть сделано в рамках Zap (никогда не использовал Zapier) или в качестве второго прохода, т.е. либо сценария приложения Google запускается после поступления заказа; или даже формула электронной таблицы автоматически разбивает порядок на второй лист. У вас есть лист за заказ, или Zap продолжает добавлять каждый заказ на один лист? Для нас требуется дополнительная информация, которая раньше не использовала Zapier. Также необходима копия электронной таблицы заказов (фиктивная, но точная). –

+0

1. Re: Google Apps Script - я рассматривал это как вариант; продукты разделяются запятой в каждой ячейке, поэтому сценарий может быть создан для разделения данных аналогично функции «text to columns» в Excel, но я пытался избежать чего-то обычного. –

+0

2. Пример манекена. Я создал поддельный пример того, чего я пытаюсь достичь и что происходит в настоящее время: [https://docs.google.com/a/perfectpixelmarketing.com/spreadsheets/d/17A4661YqYzb0NWXUEMmHzIKkDEdzpu_HoexXOUSEqFs/edit ? УСП = разделение]. –

ответ

0

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

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

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

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

Полные строки отображаются на листе 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(); 
} 
+0

Ничего себе - это здорово. Я скоро поиграю с ним и дам вам знать, как это работает. Спасибо за помощь! –