2017-01-16 9 views
0

BigCommerce 계정을 내 Google 스프레드 시트 (드라이브) 계정에 성공적으로 연결 했으므로 내 스토어에서 새로운 주문을받을 때마다 주문이 자동으로 Google 시트로 내보내집니다 . 불행히도 전체 주문은 한 행에 나열되며 여러 항목이 하나의 셀에 추가됩니다. 내가 필요한 것은 각 제품을 자체 행에 두는 것입니다. 예를 들어 누군가 세 가지 제품을 주문하면 Zapier는 세 개의 새 행을 만듭니다. 이 기능은 BigCommerce에서 직접 주문을 내보낼 때 존재하지만 "Zap"은 내 상점에서 Google Sheet로 주문 정보를 가져올 때 BigCommerce 내보내기 기능을 사용하지 않습니다.Zapier : BigCommerce to Google 시트, 각 항목의 새로운 행

나는 이것이 어둠 속에서 찍힌다는 것을 알고 있지만 누군가가 내가 구현할 수있는 해결책을 가지고 있기를 바랍니다. 도와 줘서 고마워!

+0

당신은 확실히 여러 행으로 순서를 분할 할 수 있습니다 ...하지만 난이 (Zapier 사용되지 않는)를 써 내에서 수행 할 수 있는지 알 수 없거나 즉 두 번째 패스, 하나 Google 애플리케이션 스크립트로 주문이 도착하면 실행됩니다. 심지어 스프레드 시트 수식은 주문을 두 번째 시트로 자동 분할합니다. 주문 당 시트가 있습니까? 아니면 Zap이 각 시트를 동일한 시트에 계속 추가합니까? 이전에 Zapier를 사용하지 않은 추가 정보가 필요합니다. 또한 주문 스프레드 시트의 사본 (모조이지만 정확한)이 필요할 수 있습니다. –

+0

1. Re : Google Apps Script - 옵션으로 고려했습니다. 제품은 Excel의 "text to columns"기능과 비슷하게 데이터를 분할하기 위해 스크립트를 작성할 수 있도록 각 셀 내에서 쉼표로 구분되어 있지만 사용자 지정 사항을 피하려고했습니다. –

+0

2. 더미 예제 - 저는 현재 달성하려는 것과 현재 일어나고있는 가짜 예제를 만들었습니다 : [https://docs.google.com/a/perfectpixelmarketing.com/spreadsheets/d/17A4661YqYzb0NWXUEMmHzIKkDEdzpu_HoexXOUSEqFs/edit ? usp = sharing]. –

답변

0

나는 적어도 프로세스가 Zapier 내에서 처리 될 수있을 때까지 사용되거나 수정 될 수있는 스크립트를 만들었습니다.

다음 SS의 스크립트를 시도 할 수 있습니다 : https://docs.google.com/spreadsheets/d/1ggNYlLEeN3UYtZC_KlOGwpyII9CzOLKMnIOKIDrPJPM/edit?usp=sharing

스크립트는 주문 Zapier라는 탭에 도착할 것으로 가정합니다. 상황이 설정되면 사용자 정의 메뉴를 통해 스크립트를 실행합니다.

두 개 이상의 주문이있는 경우 각 주문의 메뉴를 클릭하십시오.

전체 행은 전체 목록 시트에 표시됩니다.

(재생/다시 시도하려면 풀리스트에서 행을 수동으로 삭제해야합니다.)

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

와우 - 대단합니다. 나는 곧 주위에서 놀고 그것이 어떻게 작동하는지 알려줄 것이다. 도와 줘서 고마워! –