复制多行从一个工作表到目标-谷歌应用程序脚本(..不是函数错误)



我正试图编写一个脚本,将复制一个一般源表上的特定行,并将其粘贴到目标表。我知道网上有很多这样的例子,但有一些变化与我的代码不工作,所以对我来说很难应用(新手)。

下面是我写的代码:

function singleSheetIOD() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lr = ss.getLastRow();
var fillDownRange = ss.getRange(2, 19, lr-3);
ss.insertColumnAfter(18);
ss.getRange(1,19,1,1).setValue('IOD');
ss.getRange("S2").setFormula("=H2*R2");

ss.getRange("S2").copyTo(fillDownRange);
const netSquare = ss.getRange('S2:S').getValues().flat().filter(v=>v!='');
const sum = netSquare.reduce((a,b)=>a+b);
ss.getRange(ss.getLastRow(), 20, 1, 1).setValue(sum);
const value1 = ss.getRange(lr, 20).getValue();
const value2 = ss.getRange(lr,9).getValue();
const divisor = value1/value2;
ss.getRange(lr,11,1,1).setValue(divisor);
%below this is the actual "copy and paste" attempt
var lastTwoRows = ss.getRange(lr-1,1,2,11).getValues();
var pastesheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Summary');
pastesheet.setValues(lastTwoRows);
}

我一直收到这个错误:TypeError: pastesheet。setValues不是一个函数

重要的是,我没有按名称定义源工作表(只定义目标工作表),因为它嵌套在for循环中,该循环将遍历电子表格中的所有其他工作表。

有没有人知道为什么我可能会收到这个错误?

谢谢你。

AEB

您必须定义要查找setValues的工作表的range

// Currently:
pastesheet.setValues(lastTwoRows);
// Needs to be:
pastesheet.getRange(...).setValues(lastTwoRows);

到目前为止,您正在尝试设置工作表上的值,但没有指定将它们放在哪里。

注意:范围必须等于你正在设置的数组的大小。

:

  • 。getRange(row, column, numRows, numColumns)
  • .getRange (a1Notation)

最新更新