2016-01-24 70 views
1

这里是我的测试兔子表:https://docs.google.com/spreadsheets/d/151h1XjB98NOBnO0otNaql3ASjK84CccZZ399dX4BMBM/edit?usp=sharing复制销售订单数据OrderKey

我试图做到:在“salesOrder”表

  1. 用户输入销售订单
  2. 用户提交销售订单

  3. a)销售订单信息写入'OrderKey'Sheet b)标题信息(日期,公司,采购订单,销售订单,Conta CT,电子邮件,电话,留言,经,帐户船)重复每一个产品线项目进入片进入“OrderKey”表

有麻烦搞清楚如何去这样做。

我现在已经创建了一个'kludge'表来公式地复制'salesOrder'表中的实时信息。

我把它命名为kludge,因为它不是解决我的问题的优雅方式,也不是我希望解决的问题。

无论如何,'kludge'方法由于追加NULL DATA而不起作用......所以我怎么复制只有非空数据呢?

function onOpen() { 
    var ui = SpreadsheetApp.getUi(); 
    // Or DocumentApp or FormApp. 
    ui.createMenu('Custom Menu') 
     .addItem('Submit Sales Order', 'menuItem1') 
     .addToUi(); 
} 


function menuItem1() { 
    var ss = SpreadsheetApp.getActive(); 
    var sheet = ss.getSheetByName("kludge"); 
    var sourceInfo = sheet.getRange("A:N65"); 
    var targetInfo = ss.getSheetByName("OrderKey"); 
    var values = sourceInfo.getValues(); 
    targetInfo.appendRow(values[0]); 

    sheet.getRange('B4:B5').clearContent(); 
    sheet.getRange('B8').clearContent(); 
    sheet.getRange('G6:G8').clearContent(); 
    sheet.getRange('F10:G10').clearContent(); 
    sheet.getRange('A13:B76').clearContent(); 
    sheet.getRange('J13:J76').clearContent(); 
    var cell = activeSheet.getRange("I1"); 
    var cellValue = cell.getValue(); 
    cell.setValue(cellValue + 1); 
} 

回答

1

这是前一个快速的解决方案版本(组装机)之前,不知道这是最好的办法,

var ss = SpreadsheetApp.getActive(); 
var sheet = ss.getSheetByName("salesOrder"); 

var val1 = sheet.getRange("G3").getValue(); 
var val2 = sheet.getRange("B5").getValue(); 
var val3 = sheet.getRange("G5:G8").getValues(); 
var val4 = sheet.getRange("B8").getValue(); 
var val5 = sheet.getRange("F10").getValue(); 
var val6 = sheet.getRange("G10").getValue(); 

var targetInfo = ss.getSheetByName("OrderKey"); 
targetInfo .appendRow([val1,val2,val3[0][0],val3[1][0],val3[2][0],val3[3][0],val4,val5,val6]); 

sheet.getRange('B4:B5').clearContent(); 
sheet.getRange('B8').clearContent(); 
sheet.getRange('G6:G8').clearContent(); 
sheet.getRange('F10:G10').clearContent(); 
sheet.getRange('A13:B76').clearContent(); 
sheet.getRange('J13:J76').clearContent(); 
var cell = activeSheet.getRange("I1"); 
var cellValue = cell.getValue(); 
cell.setValue(cellValue + 1); 
+0

谢谢,我不知道如何使用.appendRow ...它具有不同的范围。我发现这只会复制到1行数据,仅用于'标题'订单数据,并保留产品范围。我仍然试图找出如何合并产品,数量,范围与多行。 – Mars

+0

嗯所以appendRow建议只有一个数组。我如何循环输入每个产品项目? – Mars

+0

欢迎,你可以[阅读更多](https://developers.google.com/apps-script/reference/spreadsheet/sheet#appendrowrowcontents)! 如果是这样,你的问题太广泛了。缩小到小部分,并在这里问。人们会帮助你。 – iJay