将特定数据列复制到另一个工作表

时间:2015-06-24 23:33:39

标签: google-apps-script google-sheets

我一直在寻找一种将特定列和数据行复制到现有工作表的方法。我的目标是创建一个脚本,从主项目表中提取数据并在现有工作表上创建订购表单。

这是我的代码

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。

我还想创建一个脚本来过滤带有空白单元格的行,就像过滤器选项可以做的那样,但是会自动完成。

感谢任何帮助。

1 个答案:

答案 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()方法没有链接。