如何将每一行发送到另一电子表格,该电子表格的名称存储在该行的单元格中?

时间:2020-07-03 11:59:01

标签: google-apps-script

我有一个9列的Google表格。 B列是实际的电子表格名称。我试图从“所有”电子表格中读取数据,并将其发送到第二行中命名的电子表格的最后一行,但是我收到“异常:错误值”消息。代码如下:

enter image description here

var ui = SpreadsheetApp.getUi();
function onOpen() {
  ui.createMenu('Send')
  .addItem('Send', 'send')
  .addToUi();
};


var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var rangeData = sheet.getDataRange();
var lastRow = rangeData.getLastRow();
var searchRange = sheet.getRange(1,1, lastRow, 9);


function send() {
  var rangeValues = searchRange.getValues();
  for ( i = 1 ; i < lastRow; i++){
      var targetSheet = ss.getSheetByName(rangeValues[i][1]);
      targetSheet.getRange(targetSheet.getLastRow()+1, 1, 1, 9).setValues(rangeValues[i][9]);
      }
};

有人可以建议我怎么做吗?

1 个答案:

答案 0 :(得分:2)

在您的脚本中,从“ A”列到“ I”列的9列中检索值。但是在targetSheet.getRange(targetSheet.getLastRow()+1, 1, 1, 9).setValues(rangeValues[i][9]);,您正在尝试从“ J”列中检索值。并且,values中的setValues(values)必须是二维数组。我认为这可能是您提出问题的原因。为此,我想提出以下两种模式。

模式1:

如果要将每行的值添加到每张工作表,那么下面的修改如何?

发件人:

targetSheet.getRange(targetSheet.getLastRow()+1, 1, 1, 9).setValues(rangeValues[i][9]);

收件人:

targetSheet.getRange(targetSheet.getLastRow()+1, 1, 1, 9).setValues([rangeValues[i]]);

模式2:

如果要将最后一列(“ I”列)的值放在每张工作表的最后一行的下一行,该怎么做?

发件人:

targetSheet.getRange(targetSheet.getLastRow()+1, 1, 1, 9).setValues(rangeValues[i][9]);

收件人:

targetSheet.getRange(targetSheet.getLastRow()+1, 1).setValue(rangeValues[i][8]);

参考文献:

相关问题