【问题标题】:Zapier: BigCommerce to Google Sheet, New Row for Each ItemZapier:BigCommerce 到 Google 表格,每个项目的新行
【发布时间】:2017-05-31 12:30:31
【问题描述】:

我已成功将我的 BigCommerce 帐户关联到我的 Google 表格(云端硬盘)帐户,因此每次我在商店中收到新订单时,订单都会自动导出到 Google 表格中。不幸的是,整个订单列在一行中,多个项目添加到一个单元格中。我需要的是让每个产品都在自己的行中;例如,如果有人订购了三种不同的产品,Zapier 将创建三个新行。此功能在直接从 BigCommerce 导出订单时存在,但“Zap”在将订单信息从我的商店拉到 Google 表格时不使用 BigCommerce 导出功能。

我知道这是在黑暗中拍摄,但我希望有人可以提供我可以实施的解决方案。感谢您的帮助!

【问题讨论】:

  • 你绝对可以将订单分成几行......但我不知道这是否可以在 Zap 中完成(从未使用过 Zapier)或作为第二遍,即谷歌订单到达后运行 Apps 脚本;甚至电子表格公式会自动将订单拆分为第二张工作表。您是否每个订单都有一张表,或者 Zap 是否不断将每个订单添加到同一张表中?以前没有使用过 Zapier 的我们需要更多信息。订单电子表格的(虚拟但精确)副本也是必要的。
  • 1.回复:Google Apps 脚本 - 我认为这是一种选择;产品在每个单元格中用逗号分隔,因此可以创建一个脚本来拆分数据,类似于 Excel 的“文本到列”功能,但我试图避免这样的自定义。
  • 2.虚拟示例 - 我创建了一个假示例来说明我正在努力实现的目标以及当前正在发生的事情:[docs.google.com/a/perfectpixelmarketing.com/spreadsheets/d/….
  • 3.回复:每个订单的工作表 - Zap 在同一个工作表上创建一个新行;这可能是默认设置。我不知道我是否能够对工作流程进行更改。
  • 您可以授予访问您共享的工作表的权限吗?

标签: google-sheets bigcommerce zapier


【解决方案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();
}

【讨论】:

  • 哇——太棒了。我很快就会玩弄它,并让你知道它是如何工作的。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2018-03-07
  • 1970-01-01
  • 2018-12-08
  • 2020-05-31
  • 1970-01-01
  • 2017-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多