我有一个9列的Google表格。 B列是实际的电子表格名称。我试图从“所有”电子表格中读取数据,并将其发送到第二行中命名的电子表格的最后一行,但是我收到“异常:错误值”消息。代码如下:
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]);
}
};
有人可以建议我怎么做吗?
答案 0 :(得分:2)
在您的脚本中,从“ A”列到“ I”列的9列中检索值。但是在targetSheet.getRange(targetSheet.getLastRow()+1, 1, 1, 9).setValues(rangeValues[i][9]);
,您正在尝试从“ J”列中检索值。并且,values
中的setValues(values)
必须是二维数组。我认为这可能是您提出问题的原因。为此,我想提出以下两种模式。
如果要将每行的值添加到每张工作表,那么下面的修改如何?
targetSheet.getRange(targetSheet.getLastRow()+1, 1, 1, 9).setValues(rangeValues[i][9]);
targetSheet.getRange(targetSheet.getLastRow()+1, 1, 1, 9).setValues([rangeValues[i]]);
如果要将最后一列(“ I”列)的值放在每张工作表的最后一行的下一行,该怎么做?
targetSheet.getRange(targetSheet.getLastRow()+1, 1, 1, 9).setValues(rangeValues[i][9]);
targetSheet.getRange(targetSheet.getLastRow()+1, 1).setValue(rangeValues[i][8]);