数组的setValue()仅粘贴数组中的一个值

时间:2017-05-16 02:06:10

标签: google-apps-script

我有一张工作表,我在条形码列的值末尾取最后一个数字,表示订单中的项目总数。我把这些值放在一个数组中。然后我尝试将数组的值设置为“Number of Units”列。但是,它将数组的第一个值放入列中的所有单元格。如何让它将数组中的每个值放入“单位数”列下的自己的单元格中?

以下是工作表中的问题: enter image description here

这是代码应该做的事情:(我只是手动设置值)enter image description here

条形码列中最后一个连字符后的数字是单位数。

这是我的代码,它分割条形码值并将数字添加到数组中:

function numberOfUnits() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  //Get specific sheet
  var sheet = ss.getSheetByName('Sheet3');

  // get teh data on the sheet
  var values = sheet.getDataRange().getValues();
  var units = []
  for (var i = 1 ; i < values.length; i++) {
   var barcode = values[i][1];
   var unit = barcode.split('-');
    units.push(unit[unit.length-1]);

  }
  return units;
}

这似乎工作正常,但是当我从另一个函数中调用此函数时,就是当我收到错误时。

这是另一个功能:

function rate() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  //Get specific sheet
  var sheet = ss.getSheetByName('Sheet3');

  // get the data on the sheet
  var values = sheet.getDataRange().getValues();
  // sets the units as an array of all the units values
  var units = numberOfUnits();
  // sets the unit value to every cell under the "number of units" column
  sheet.getRange(2, values[0].length, values.length, 1).setValue(units);

}

1 个答案:

答案 0 :(得分:1)

这一行:

sheet.getRange(2, values[0].length, values.length, 1).setValue(units);

应该是

sheet.getRange(2, values[0].length, values.length, 1).setValues(units);

请注意差异setValuessetValuedocumentation