Google Script:添加数组

时间:2017-01-30 19:31:01

标签: arrays google-apps-script google-sheets

我想写一个包含两个主要部分的谷歌电子表格:一个单独的订单表格来计算价格&一个统计总订单的系统。

我在这里制作了简化版:https://docs.google.com/spreadsheets/d/1_vRnX-qT3-0puYhtBCclYIVu504A-donE4nU8rQn41k/edit?usp=sharing

在记下单个订单并支付订单后,单击绿色按钮。该按钮激活付款脚本。

付款脚本需要将单个订单的值添加到总订单中,然后清空各个订单。

function payment() {

  var individualOrder = SpreadsheetApp.getActiveSheet().getRange('E3:E6').getValues();
  var currentTotal = SpreadsheetApp.getActiveSheet().getRange('O3:O6').getValues();
  var newTotal = [0,0,0,0];

  for (var i = 0; i < 4; i++) {
    newTotal[i] = currentTotal[i] + individualOrder[i];
  }

  SpreadsheetApp.getActiveSheet().getRange('O3:O6').setValues([newTotal]);

  // Reset individual order after payment
  SpreadsheetApp.getActiveSheet().getRange('E3:E6').setValue(0);

}

编辑:现在它可以使用下面的代码替换新的Total值,但还有另一个问题。在对数组值1 + 0求和时,它将它们连接到10而不是使用数学值。有什么想法吗?

function payment() {

  var individualOrder = SpreadsheetApp.getActiveSheet().getRange('E3:E6').getValues();
  var currentTotal = SpreadsheetApp.getActiveSheet().getRange('O3:O6').getValues();
  var newTotal = currentTotal;

  Logger.log(individualOrder);
  Logger.log(currentTotal);

  for (var i = 0; i < 4; i++) {
    newTotal[i] = [currentTotal[i] + individualOrder[i]];
  }

  Logger.log(newTotal);

  SpreadsheetApp.getActiveSheet().getRange('O3:O6').setValues(newTotal);

  // Reset individual order after payment
  SpreadsheetApp.getActiveSheet().getRange('E3:E6').setValue(0);

}

2 个答案:

答案 0 :(得分:0)

如果您只想将'individualOrder'设置为0,请尝试:

function payment() {
  var individualOrder = SpreadsheetApp.getActiveSheet().getRange('E3:E6').getValues();
  for (var i = 0; i <individualOrder.length ; i++) {
    individualOrder[i]=[0];
  }
   SpreadsheetApp.getActiveSheet().getRange('E3:E6').setValues(individualOrder);
}

答案 1 :(得分:0)

我通过在电子表格中输入总和并在该范围内执行.getValues并在.setValues中使用它来解决它。更容易,只有2行代码。