我一直在寻找一种将特定列和数据行复制到现有工作表的方法。我的目标是创建一个脚本,从主项目表中提取数据并在现有工作表上创建订购表单。
这是我的代码
function createOrder() {
var ss = SpreadsheetApp.getActiveSheet();
var ordess = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Ordering");
var mayitems = 186; //number of rows
var descrip = ss.getRange(2, 10, mayitems, 4).getValues(); //first 4 columns to pull
var descrip2 = ss.getRange(2, 19, mayitems).getValues(); //fifth column to pull
var price = ss.getRange(2, 76, mayitems).getValues(); //sixth column to pull
var pallets = ss.getRange(640, 76, 1).getValues(); //specific cell to pull
var targdesc = ordess.getRange(1, 1, mayitems, 4); //first 4 columns to copy to
descrip.copyTo(targdesc); //copying the first 4 columns.
}
我查看了函数引用,copyTo似乎是我应该使用的那个。我按照这个例子,但是当我运行代码时,它给了我一个TypeError无法在对象中找到函数copyTo。
我还想创建一个脚本来过滤带有空白单元格的行,就像过滤器选项可以做的那样,但是会自动完成。
感谢任何帮助。
答案 0 :(得分:1)
您的变量descrip
是一个二维数组。 copyTo()
方法适用于范围,它不适用于数组。您似乎从特定列中获取彼此不相邻的数据。因此,您需要在多行代码中复制多个范围,或者将所需的数据组合到一个数组中,然后使用setValues()
设置目标位置中的值。如果您想使用copyTo()
,则根本不需要使用getValues()
。
var descrip = ss.getRange(2, 10, mayitems, 4);
var targdesc = ordess.getRange(1, 1, mayitems, 4);
descrip.copyTo(targdesc);
唯一的区别是,getValues()
方法没有链接。