将销售订单数据复制到OrderKey

时间:2016-01-24 06:01:31

标签: google-apps-script google-sheets

这是我的测试兔子表:https://docs.google.com/spreadsheets/d/151h1XjB98NOBnO0otNaql3ASjK84CccZZ399dX4BMBM/edit?usp=sharing

我想要完成的任务:

  1. 用户在' salesOrder'上输入销售订单。片
  2. 用户提交销售订单

  3. a)销售订单信息写入' OrderKey'片 b)标题信息(日期,公司,采购订单,销售订单,联系人,电子邮件,电话,评论,发货人,帐户)重复输入到表单中的每个产品系列项目到订单键'片

  4. 遇到麻烦,想弄清楚如何去做。

    我现在已经创建了一个' kludge'表格以公式方式复制来自&sale;' 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);
    }
    

2 个答案:

答案 0 :(得分:1)

这是之前(在kludge之前)版本的快速解决方案,不确定这是最好的方式,

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);

答案 1 :(得分:1)

Aurielle Perlmann在这里优雅地找到了解决方案:

https://stackoverflow.com/a/34982276/5229520

谢谢。