下面是我的脚本,当getRange使用a1表示法时,但是当使用行列表示法时,范围的最后一列被拉到第一列,并且数组中没有其他数据。如果这是一个已知的问题,您如何以编程方式表示"A6:M8“以包括行数。// source行不起作用,我没能使它智能化!
function Copy() {
var lp=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("LP").activate();
var sourceRows = lp.getLastRow();
var source = lp.getRange('A6:M8').getValues();
// var source = lp.getRange(6, 13, (sourceRows-5), 13).getValues();
var tr= SpreadsheetApp.getActiveSpreadsheet().getSheetByName('TR').activate();
var trRows = tr.getLastRow();
//var trput = lp.getRange('A234:M236').setValues(source);
var trput = tr.getRange((trRows+1), 1, 3, 13).setValues(source);
};发布于 2018-07-03 19:23:56
假设表LP中的最后一行是第8行,那么您的(sourceRows-5)计算应该是正确的。(还假设您总是希望一次复制3行。)
问题是您输入了13作为范围的起始列。相反,该行应为
var source = lp.getRange(6, 1, (sourceRows-5), 13).getValues();另外两个建议:
var ss = SpreadsheetApp.getActiveSpreadsheet();activate()调用,因此可以考虑删除。然后你会得到类似这样的东西:
function Copy() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var lp = ss.getSheetByName("LP");
var sourceRows = lp.getLastRow();
var source = lp.getRange(6, 1, (sourceRows-5), 13).getValues();
var tr= ss.getSheetByName("TR");
var trRows = tr.getLastRow();
var trput = tr.getRange((trRows+1), 1, 3, 13).setValues(source);
};https://stackoverflow.com/questions/51150672
复制相似问题